HTTP 方法速查表 - REST/HTTP 请求动词与幂等性大全

HTTP 方法难的不是记定义,而是判断一次具体操作该用哪个动词,以及重试和并发下会不会出事。本表按语义分组,把每个方法的幂等性、安全属性、请求体习惯和对应状态码放在一起对照,重点区分几组真正会咬人的组合:PUT 是全量替换,漏传字段等于删除,而 PATCH 只改你传的部分;POST 不幂等,重试会造出重复订单,必须配幂等键;GET 与 HEAD 是安全方法,一旦在里面写状态就不符合语义,也会被浏览器和代理预取放大。判断用法的实操标准有两条:接口上线前先问"客户端重试一次会不会多出一条数据",会则必须做幂等设计;再问"这个操作能否只描述差异",不能就用全量替换。与状态码表的分工是,那张表管返回什么,这张表管为什么选这个动词。

参考手册·共 27 条命令·最后更新 2026-08-02
http方法rest幂等api

核心方法 Core Methods 7

GET
获取资源,安全且幂等,不应有副作用
POST
创建子资源或提交处理,非幂等
PUT
完整替换资源,幂等(重复请求结果一致)
PATCH
部分更新资源,通常不幂等(除非语义保证)
DELETE
删除资源,幂等(多次删结果一致)
HEAD
同 GET 但只返回头,用于探活/缓存校验
OPTIONS
查询目标支持的通信选项,CORS 预检用

幂等与安全性 Idempotency & Safety 4

安全方法
GET、HEAD、OPTIONS(不改变服务器状态)
幂等方法
GET、PUT、DELETE、HEAD、OPTIONS
非幂等
POST、PATCH(默认不保证重复请求一致)
Idempotency-Key
POST 重试时用请求头键避免重复创建

状态码搭配 Status Pairing 6

GET → 200 / 304
成功或命中缓存
POST → 201 / 202
创建成功或已接收异步处理
PUT → 200 / 204
替换成功,可返回新资源或空
PATCH → 200 / 204
部分更新成功
DELETE → 204 / 200
删除成功,无内容或返回摘要
方法不允许 → 405
对只支持 GET 的接口发 POST

常见误用 Mistakes 4

用 GET 改状态
违反安全语义,爬虫/预取会误触发副作用
PUT 当 PATCH 用
PUT 需传完整资源,缺字段会被清空
POST 重复提交
无幂等键时重试会创建重复资源
DELETE 返回 200 带正文
更规范是 204 No Content

REST 设计约定 6

GET /users
列表资源(集合)
GET /users/1
单个资源(子资源)
POST /users
新建资源
PUT /users/1
整体替换用户 1
PATCH /users/1
局部更新用户 1
DELETE /users/1
删除用户 1

提示

  • PUT 传完整资源,缺字段会被清空;只想改部分用 PATCH。
  • GET/HEAD/OPTIONS 是安全方法,不要在其中改服务器状态。
  • POST 重试要带 Idempotency-Key,否则可能重复创建资源。
  • HTTP 状态码速查表已单独提供,设计接口时配合本表一起看。
  • PUT 响应体回不回新资源有分歧:REST 规范允许 200 或 204,但若前端依赖返回值做乐观更新就必须回 200 并带完整资源,团队内要统一选一种。
  • 并发更新用 ETag/If-Match 做乐观锁比自造 version 字段更标准:读接口返回 ETag,客户端改完带 If-Match,不匹配返 412 Precondition Failed。
  • DELETE 删不存在的资源按语义应幂等,但若业务上"删了要知道原来是什么"就得查库并回 200,退化成 POST 语义时要明确写进接口文档。

常见问题

http 302 和 307 重定向有什么区别?

两者都是临时重定向,但 302 允许浏览器把 POST 改成 GET(历史上很多实现这么做),307 明确定义要保持原方法与请求体,POST 仍是 POST。301 是永久移动并常把方法改为 GET;要在不丢失语义的前提下保留 POST body,用 307。

http 里 PUT 和 PATCH 到底该用哪个?

PUT 是整资源替换:客户端提交完整表示,缺失字段会被当作清空,且幂等,重复请求结果相同。PATCH 做局部更新,只传要改的字段,允许部分内容,但不保证幂等。设计增量更新接口用 PATCH,全量覆盖或创建用 PUT。

GET 请求可以带请求体吗?

规范允许 GET 带 body,但实际很少可靠:代理、缓存、CDN 可能忽略或丢弃它,且 GET 要求无副作用、可缓存。需要传复杂查询就用 URL 查询参数,数据过长或含敏感结构时改用 POST。别依赖 GET body 这种脆弱约定。

http 幂等性是什么意思,哪些方法幂等?

幂等指同一请求执行一次与执行多次,服务端状态都一致,重复发送无害。GET、PUT、DELETE、HEAD、OPTIONS 是幂等的;POST 不幂等,连续提交会创建多条资源。因此自动重试只能作用于幂等请求,POST 需要靠唯一幂等键等方式去重。

接口返回 404 还是 405,怎么区分?

404 是资源不存在(路径写错或资源已删除),405 是资源存在但方法不被支持(如对只读资源发 DELETE),返回 405 时应带 Allow 头列出允许的方法。路径错误给 404,方法用错给 405;清晰区分更利于联调,部分 API 出于安全边界两种都返回 404。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年8月2日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们