写后端的时候,前后端的端口制定需要一定的规范,前后端都需要了解 HTTP 协议的请求分类和使用场景.
9种请求方法
HTTP1.0 定义了三种请求方法:
- GET
- POST
- HEAD
HTTP1.1 新增了六种请求方法:
- OPTIONS
- PUT
- PATCH
- DELETE
- TRACE
- 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.