QUERYNEW
带请求体的安全查询方法——“带 body 的 GET”。
safe ✓idempotent ✓cacheable ✓body ✓
QUERY(IETF draft draft-ietf-httpbis-safe-method-w-body)是新引入的方法:安全、幂等,且允许携带请求体。它解决了 GET 无法安全携带 body、复杂查询被迫塞进超长 URL 的问题,也避免了用 POST 做查询导致的“不安全/不可缓存”语义错配。响应可缓存,服务器应通过 Content-Location 指明所查询资源的位置作为缓存键。适用于复杂搜索、GraphQL 式查询、需要大量过滤条件的检索场景。
GET
获取资源,不应产生副作用。
safe ✓idempotent ✓cacheable ✓body ✗
最常用的方法,用于读取资源。安全(不改变服务端状态)、幂等、可缓存。请求体在 GET 中没有定义语义,应避免使用。
POST
提交数据,通常创建资源或触发处理。
safe ✗idempotent ✗cacheable ✗body ✓
用于向服务器提交数据。既不安全也不幂等——重复发送可能创建多个资源。常被误用于查询(因为能带 body),但语义上不适合查询,这正是 QUERY 想取代的场景之一。
PUT
整体替换目标资源。
safe ✗idempotent ✓cacheable ✗body ✓
用完整表示替换目标资源。幂等——重复发送同一 PUT 结果一致。若资源不存在通常会创建。
PATCH
对资源做部分修改。
safe ✗idempotent ✗cacheable ✗body ✓
对资源应用部分更新(如 JSON Patch / JSON Merge Patch)。默认不保证幂等,取决于 patch 文档的语义。
DELETE
删除目标资源。
safe ✗idempotent ✓cacheable ✗body ✗
删除指定资源。幂等——删除已删除的资源仍返回一致结果(通常 404/204)。
HEAD
与 GET 相同但只返回响应头,无 body。
safe ✓idempotent ✓cacheable ✓body ✗
用于获取元信息(如 Content-Length、Last-Modified)而不下载正文。安全、幂等、可缓存。
OPTIONS
查询目标资源支持的通信选项。
safe ✓idempotent ✓cacheable ✗body ✗
返回服务器对目标资源支持的方法等信息,常见于 CORS 预检请求(preflight)。