HTTPQUERY
English

HTTP 方法介绍

涵盖常用方法与新发布的 QUERY 方法。徽章标注每个方法是否 safe / idempotent / cacheable / 允许 body。

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)。

TRACE

HTTP TRACE 沿请求路径执行回环诊断测试,可暴露中间代理对请求的修改。因存在安全风险,生产环境通常禁用。

safe ✓idempotent ✓cacheable ✗body ✗

HTTP TRACE 用于诊断中间节点在请求到达服务器的过程中是否修改了请求。最终接收者将收到的请求原样反射到响应体中,从而暴露代理和网关所做的改动。

CONNECT

HTTP CONNECT 通过代理建立 TCP 隧道,用于 HTTPS 及其他协议的隧道传输。涵盖隧道流程、代理行为与安全考量。

safe ✗idempotent ✗cacheable ✗body ✗

当位于代理后方的客户端需要与远程主机建立直接 TCP 通道时,会使用 HTTP CONNECT 方法通过中间代理建立隧道。