跳到主要内容

HTTP

整理回顾http相关通识,方便日后查阅

方法

已幂等副作用划分请求方法

HTTP 请求方法幂等性副作用(是否修改服务器状态)核心说明(场景 + 示例)
GET无(只读)查数据,不改任何状态。比如 GET /users/1(查用户 1 信息),执行 100 次也只返回数据,不影响服务器。
HEAD无(只读)和 GET 功能一致,只返回响应头(不返回响应体),比如 HEAD /users/1 验证用户是否存在,无副作用。
OPTIONS无(只读)询问服务器“该接口支持哪些请求方法”,比如 OPTIONS /api,仅获取信息,不修改状态。
TRACE无(只读)用于调试,返回服务器收到的原始请求(回声),比如 TRACE /api,不产生任何修改。
POST有(新增 / 触发动作)新增数据或触发非幂等动作。比如 POST /users(新增用户)、POST /pay(发起支付)—— 执行多次会创建多个用户 / 扣多次款,不幂等且有副作用。
PUT有(全量修改)全量更新数据(按唯一标识覆盖)。比如 PUT /users/1(更新用户 1 信息)—— 执行 1 次和执行 10 次,最终用户 1 的信息都是最后一次请求的内容,效果一致(幂等),但会修改状态(有副作用)。
PATCH有(部分修改)部分更新数据(只改需要的字段)。比如 PATCH /users/1(仅改用户 1 的手机号)—— 多次执行可能导致字段被重复修改(比如每次改手机号为不同值),不幂等,且有副作用。
DELETE有(删除数据)删除指定资源。比如 DELETE /users/1(删除用户 1)—— 执行 1 次用户 1 被删除,执行 10 次还是删除状态(不会额外删除其他数据),效果一致(幂等),但会修改状态(有副作用)。
DELETE(批量)有(批量删除)特殊场景:DELETE /users?ids=1,2(批量删除用户 1 和 2)—— 若第一次执行删除 1,第二次执行删除 2(因网络延迟导致两次请求),多次执行效果不同,不幂等。

状态

状态码类别含义
1XXnformational(信息性状态码)接收的请求正在处理
2XXuccess(成功状态码)请求正常处理完毕
3XXedirection(重定向状态码)需要进行附加操作以完成请求
4XXlient Error(客户端错误状态码)服务器无法处理请求
5XXerver Error(服务器错误状态码)服务器处理请求出错
  1. 1XX 信息 100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。
  2. 2XX 成功 200 OK
  • 204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。

  • 206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。

  1. 3XX 重定向
  • 301 Moved Permanently :永久性重定向

  • 302 Found :临时性重定向

  • 303 See Other :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。

注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。

  • 304 Not Modified :如果请求报文首部包含一些条件,例如:If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since,如果不满足条件,则服务器会返回 304 状态码。

  • 307 Temporary Redirect :临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。

  1. 4XX 客户端错误
  • 400 Bad Request :请求报文中存在语法错误。

  • 401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。

  • 403 Forbidden :请求被拒绝。

  • 404 Not Found

  1. 5XX 服务器错误
  • 500 Internal Server Error :服务器正在执行请求时发生错误。

  • 503 Service Unavailable :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。