写后端的时候,前后端的端口制定需要一定的规范,前后端都需要了解 HTTP 协议的请求分类和使用场景.

9种请求方法

HTTP1.0 定义了三种请求方法:

  1. GET
  2. POST
  3. HEAD

HTTP1.1 新增了六种请求方法:

  1. OPTIONS
  2. PUT
  3. PATCH
  4. DELETE
  5. TRACE
  6. CONNECT

因此截止到 HTTP1.1, 一共有 9 种请求方式.

使用场景

命令 目的 使用场景 备注 特点
GET 获取资源 1. 获取网页内容。2. 查询API以获取数据列表或单个资源。 发送请求取得服务器上的某种资源,Get请求本身不应当携带任何呈现数据 1. 参数显示在URL查询字符串中。2. 无副作用(幂等性操作),多次执行相同GET请求结果不变。能够被浏览器缓存。3. 安全性较低,因为参数暴露在URL中。4. 有限制的请求数据大小,具体由服务器决定,但通常不超过几KB。
POST 传输实体文本 1. 提交表单数据。2. 创建新用户账户。3. 更新用户资料。4. 发送评论或其他类型的数据到服务器。 向指定资源提交数据进行处理请求,数据在请求题里 1. 参数包含在请求正文中,不显示在URL上。 2. 可能产生副作用,例如新建、更新或删除资源。 3. 请求数据量相对较大,理论上没有明确限制,实际受限于服务器配置 4. 默认情况下不是幂等的,即重复相同的POST请求可能会有不同的结果。
HEAD 获得报文首部 检查资源状态而不需要传输整个资源内容。 类似于 GET,但是返回的响应中没有具体的内容,欲判断某个资源是否存在时使用。
OPTIONS 询问支持的方法 预检请求(CORS跨域资源共享时会用到),了解服务器功能。 询问服务器可以提交哪些请求方法,若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
PUT 传输文件 1. 更新完整的资源对象。 向服务器传送的数据取代指定的文档的内容,指定上传资源存放路径,HTML表单也不支持这个.
重要区别:PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。
与POST相似,但具有幂等性,多次PUT同一资源应当产生相同的结果。
PATCH 局部更新文件 针对资源的部分属性进行更新。 是对 PUT 方法的补充,用来对已知资源进行局部更新 只提交需要更改的部分,而非整个资源内容。
DELETE 删除文件 删除账户、文件或者其他可删除的资源。 请求服务器删除指定的资源。 幂等性,多次请求删除同一样资源应该导致相同的结果(即资源都已经被删除)。
TRACE 追踪路径 要求服务器回显收到的请求,让Web服务器端将之前的请求通信还给客户端的方法。主要用于测试或诊断。
CONNECT 要求用隧道协议连接代理 HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器,CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要***L(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输。

建立Websocket

HTTP 协议中的 GET 和 POST 请求都可以作为升级到 WebSocket 连接的起点。在 HTTP 1.1 规范中定义了协议升级机制,允许客户端通过 Upgrade 首部字段发起将连接从 HTTP 更改为另一种协议(如 WebSocket)的请求。

但是用于启动 WebSocket 连接的 HTTP 请求通常是 GET 方法,因为 WebSocket 的目的是建立一个持久的双向通信通道,而 GET 请求更符合这一目的,而且更容易被代理服务器和中间件处理。但理论上 POST 方法也可以用来升级为 WebSocket.