HTTP 方法介绍
涵盖常用方法与新发布的 QUERY 方法。徽章标注每个方法是否 safe / idempotent / cacheable / 允许 body。
QUERYNEW
带请求体的安全查询方法——“带 body 的 GET”。
QUERY(IETF draft draft-ietf-httpbis-safe-method-w-body)是新引入的方法:安全、幂等,且允许携带请求体。它解决了 GET 无法安全携带 body、复杂查询被迫塞进超长 URL 的问题,也避免了用 POST 做查询导致的“不安全/不可缓存”语义错配。响应可缓存,服务器应通过 Content-Location 指明所查询资源的位置作为缓存键。适用于复杂搜索、GraphQL 式查询、需要大量过滤条件的检索场景。
GET
获取资源,不应产生副作用。
最常用的方法,用于读取资源。安全(不改变服务端状态)、幂等、可缓存。请求体在 GET 中没有定义语义,应避免使用。
POST
提交数据,通常创建资源或触发处理。
用于向服务器提交数据。既不安全也不幂等——重复发送可能创建多个资源。常被误用于查询(因为能带 body),但语义上不适合查询,这正是 QUERY 想取代的场景之一。
PUT
整体替换目标资源。
用完整表示替换目标资源。幂等——重复发送同一 PUT 结果一致。若资源不存在通常会创建。
PATCH
对资源做部分修改。
对资源应用部分更新(如 JSON Patch / JSON Merge Patch)。默认不保证幂等,取决于 patch 文档的语义。
DELETE
删除目标资源。
删除指定资源。幂等——删除已删除的资源仍返回一致结果(通常 404/204)。
HEAD
与 GET 相同但只返回响应头,无 body。
用于获取元信息(如 Content-Length、Last-Modified)而不下载正文。安全、幂等、可缓存。
OPTIONS
查询目标资源支持的通信选项。
返回服务器对目标资源支持的方法等信息,常见于 CORS 预检请求(preflight)。
TRACE
HTTP TRACE performs a loopback diagnostic test along the request path. Reveals proxy modifications, security risks, and why servers disable TRACE in production.
Diagnosing how intermediaries modify requests along the path to a server is the purpose of the HTTP TRACE method. The final recipient reflects the received request back as the response body, revealing changes made by proxies and gateways.
CONNECT
HTTP CONNECT establishes a TCP tunnel through a proxy for HTTPS and other protocols. Tunneling flow, proxy behavior, and security considerations.
When a client behind a proxy needs a direct TCP channel to a remote host, it uses the HTTP CONNECT method to establish a tunnel through the intermediary.