HTTP协议的8种请求方式及常用请求方式的解析

  什么是协议?

  协议,是指通信的双方,在通信流程或内容格式上,共同遵守的标准。

  一、什么是HTTP?

  HTTP,即超文本传输协议,是一种实现客户端和服务器之间通信的响应协议,它是用作客户端和服务器之间的请求。

  客户端(浏览器)会向服务器提交HTTP请求;然后服务器向客户端返回响应;其中响应包含有关请求的状态信息,还可能包含请求的内容。

  二、http协议的特点

  ①通信流程:断开式(无状态)

  断开式:http协议每次响应完成后,会断开与客户端的连接

  无状态:由于服务器断开了之前的连接,就无法知晓连接间的关系

  ②内容格式:消息头和消息体

  HTTP请求的方法:

  HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式

  1、OPTIONS

  返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性

  2、HEAD

  向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。

  3、GET

  向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。

  4、POST

  向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form

  5、PUT

  向指定资源位置上传其最新内容

  6、DELETE

  请求服务器删除Request-URL所标识的资源

  7、TRACE

  回显服务器收到的请求,主要用于测试或诊断

  8、CONNECT

  HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

  注意:

  1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。

  2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

  三、HTTP的8种请求方式

  HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式

  其中:

  HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

  HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

  最常用的四种请求方法:GET, POST, PUT, DELETE

  1、get请求

  get:可以理解 为 取 的意思,对应select操作

  用来获取数据的,只是用来查询数据,不对服务器的数据做任何的修改,新增,删除等操作。

  说明:

  get请求会把请求的参数附加在URL后面,这样是不安全的,在处理敏感数据时不用,或者参数做加密处理。

  get请求其实本身HTTP协议并没有限制它的URL大小,但是不同的浏览器对其有不同的大小长度限制

  举例:

  https://www.jb51.net/company/my_take_part_in_projects_list?project_id=20085821&t=1655176334048&from=left_tree

  2、post请求

  post 可以理解 为 贴 的意思

  数据发送到服务器以创建或更新资源,侧重于更新数据,对应update操作

  说明:

  post请求的请求参数都是请求body中

  举例:

  https://www.jb51.net/20085821/bugtrace/buglists/query/1/created/desc?query_token=%……&&**

  3、put请求

  put:可以理解为 放 的意思

  数据发送到服务器以创建或更新资源,侧重于创建数据,对应insert操作

  4、delete请求

  delete:字面意思删除,即删除数据,对应delete操作

  用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容

  5、options请求

  用来描述了目标资源的通信选项,返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性![

  举例:https://imgservice.csdn.net/direct/v1.0/image/upload?type=blog&rtype=markdown&x-image-template=standard&x-image-app=direct_blog&x-image-dir=direct&x-image-suffix=png

  6、head请求

  HEAD方法与GET方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。

  7、connect请求

  CONNECT方法用来建立到给定URI标识的服务器的隧道;它通过简单的TCP / IP隧道更改请求连接,通常实使用解码的HTTP代理来进行SSL编码的通信(HTTPS)。

  8、trace请求

  TRACE方法用于沿着目标资源的路径执行消息环回测试;它回应收到的请求,以便客户可以看到中间服务器进行了哪些(假设任何)进度或增量。

  综上,大家记得以下总结,即达到本贴目的

  1、get 取,是查询数据,对应select操作

  2、post 贴,常用于修改数据,对应update操作

  3、put 放,常用于新增数据,对应insert操作

  4、delete 删,是删除数据,对应delete操作

  get 和 post区别

  区别:

  get请求无消息体,只能携带少量数据

  post请求有消息体,可以携带大量数据

  携带数据的方式:

  get请求将数据放在url地址中

  post请求将数据放在消息体中

  GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;

  GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

  其它文档

  网络协议汇总:https://www.jb51.net/network/851215.html

  tcp三次握手、四次挥手:https://www.jb51.net/network/388684.html

  一次完整的http请求过程:https://www.jb51.net/network/851216.html

  常见HTTP状态码汇总:https://www.jb51.net/article/104295.htm