HTTP协议中请求方法有哪些?

HTTP是超文本传输协议(Hypertext Transfer Protocol),是用于从网页服务器传输超文本到本地浏览器的协议。它允许从网页服务器获取网页,图片,视频等资源。
HTTP协议使用请求/响应模型。客户端通过请求报文向服务器获取信息,服务器以响应报文的形式返回信息。

例如:
请求报文:

GET /index.html HTTP/1.1
Host: www.example.com

响应报文:

HTTP/1.1 200 OK
Content-Type: text/html

<html>
<body>
  <h1>Hello, world!</h1>  
</body>
</html>

HTTP协议有3个主要版本:

  • HTTP/1.0:首个正式版本,发布于1996年。
  • HTTP/1.1:发布于1999年,新增了长连接支持,增加了Host头部等。目前使用最广的版本。
  • HTTP/2:发布于2015年,基于SPIFFE标准,使用二进制分帧层,添加了头部压缩,多路复用等特性。

例如:
HTTP/1.1新增的长连接支持可以重用连接,不需要每次请求都进行TCP握手,可以提高传输效率。
HTTP/2的二进制分帧层和多路复用可以同时发送多个请求,大大降低了延迟,提高了页面加载速度。
HTTP协议的工作流程主要分为以下几个步骤:

  1. 客户端连接到服务器的80或443端口。
  2. 客户端向服务器发送一个请求报文。
  3. 服务器解析请求报文,并返回一个响应报文。
  4. 客户端解析响应报文的内容。
  5. 连接关闭或重用。

例如:

请求报文

GET /index.html HTTP/1.1
Host: www.example.com

响应报文

HTTP/1.1 200 OK  
Content-Type: text/html

<html>
<body>
  <h1>Hello, world!</h1>  
</body>  
</html>

HTTP协议定义了以下9种请求方法:

  • GET:用于获取资源。
  • POST:用于创建资源。
  • PUT:用于更新资源。
  • DELETE:用于删除资源。
  • HEAD:获取报文首部。
  • OPTIONS:获取信息,关于目标资源的哪些请求方法受支持。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。
  • CONNECT:要求 proxy 将连接改为管道方式的代理。
  • PATCH:用于更新资源的部分内容。

例如:

GET /users
POST /users 
PUT /users/1
DELETE /users/1