HTTP 方法

HTTP 请求方法完整指南,包含对比表和示例。

对比

方法有请求体幂等安全可缓存
GET
POST
PUT
PATCH
DELETE
HEAD
OPTIONS
TRACE
CONNECT
GET

GET 方法请求指定资源的表示。GET 请求应仅用于检索数据,不应对资源产生任何其他影响。由于 GET 请求不会修改状态,因此被视为安全且幂等的。

安全
幂等
可缓存
RFC 9110, Section 9.3.1

常见用例

  • 获取用户资料或账户详情
  • 列出产品或文章等资源集合
  • 通过标识符检索单个资源
  • 加载配置或设置数据
  • 使用查询参数查询搜索结果
请求
GET /api/users/123 HTTP/1.1
Host: api.example.com
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
响应
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: max-age=60

{
  "id": 123,
  "name": "Alice Johnson",
  "email": "alice@example.com",
  "role": "admin",
  "createdAt": "2025-08-14T10:30:00Z"
}
POST

POST 方法将实体提交到指定的资源,通常会导致服务器上的状态更改或副作用。它通常用于创建新资源或触发操作。POST 既不安全也不幂等,这意味着重复的相同请求可能会创建重复的资源。

有请求体
RFC 9110, Section 9.3.3

常见用例

  • 创建新的用户账户或资源
  • 提交表单或上传文件
  • 触发服务器端流程,例如发送电子邮件
  • 发布评论或消息
  • 发起支付或交易
请求
POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

{
  "name": "Bob Smith",
  "email": "bob@example.com",
  "role": "member"
}
响应
HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/users/456

{
  "id": 456,
  "name": "Bob Smith",
  "email": "bob@example.com",
  "role": "member",
  "createdAt": "2026-03-02T14:22:00Z"
}
PUT

PUT 方法使用请求负载替换目标资源的所有当前表示。如果资源不存在,PUT 可以创建它。PUT 是幂等的,这意味着多次发出相同的请求与发出一次请求产生的结果相同。

幂等
有请求体
RFC 9110, Section 9.3.4

常见用例

  • 使用更新的数据替换用户资料
  • 将文件上传到特定的 URI
  • 更新配置对象的完整表示
  • 在已知 URL 上设置或覆盖资源
请求
PUT /api/users/123 HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

{
  "name": "Alice Johnson-Smith",
  "email": "alice.js@example.com",
  "role": "admin"
}
响应
HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 123,
  "name": "Alice Johnson-Smith",
  "email": "alice.js@example.com",
  "role": "admin",
  "updatedAt": "2026-03-02T15:10:00Z"
}
PATCH

PATCH 方法对资源应用部分修改。与替换整个资源的 PUT 不同,PATCH 仅更新请求正文中提供的字段。PATCH 既不安全也不一定幂等,但可以以幂等方式实现。

有请求体
RFC 5789

常见用例

  • 更新单个字段,例如用户的电子邮件或显示名称
  • 切换布尔标志,例如活跃或归档状态
  • 增量修改复杂资源
  • 应用 JSON Patch 或 JSON Merge Patch 文档
请求
PATCH /api/users/123 HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

{
  "email": "alice.new@example.com"
}
响应
HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 123,
  "name": "Alice Johnson",
  "email": "alice.new@example.com",
  "role": "admin",
  "updatedAt": "2026-03-02T15:45:00Z"
}
DELETE

DELETE 方法从服务器删除指定的资源。成功执行 DELETE 后,对同一 URI 的后续 GET 请求应返回 404 Not Found。DELETE 是幂等的,这意味着删除已删除的资源不应在首次删除之外产生错误。

幂等
RFC 9110, Section 9.3.5

常见用例

  • 删除用户账户或资料
  • 从购物车中移除商品
  • 删除文件或上传的文档
  • 撤销 API 密钥或访问令牌
  • 取消订阅邮件列表
请求
DELETE /api/users/123 HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
响应
HTTP/1.1 204 No Content
X-Request-Id: req_abc123
HEAD

HEAD 方法与 GET 完全相同,但服务器不得在响应中返回消息正文。它适用于检查资源是否存在、检查头信息或在不下载整个响应的情况下测试链接。HEAD 是安全且幂等的。

安全
幂等
可缓存
RFC 9110, Section 9.3.2
示例
HEAD /api/users/123 HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
OPTIONS

OPTIONS 方法描述目标资源可用的通信选项。它通常用于 CORS 预检请求,浏览器在发送实际请求之前检查允许哪些 HTTP 方法和头。OPTIONS 是安全且幂等的。

安全
幂等
RFC 9110, Section 9.3.7
示例
OPTIONS /api/users HTTP/1.1
Host: api.example.com
Origin: https://app.example.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: Content-Type, Authorization
TRACE

TRACE 方法沿目标资源的路径执行消息回环测试,将接收到的请求回显。它主要用于诊断目的,以查看中间代理如何修改请求。TRACE 在生产 API 中很少使用,并且出于安全原因通常被禁用。

安全
幂等
RFC 9110, Section 9.3.8
示例
TRACE /api/users HTTP/1.1
Host: api.example.com
Max-Forwards: 3
CONNECT

CONNECT 方法建立到由目标资源标识的服务器的隧道。它主要与 HTTP 代理一起使用,通过代理发起端到端的 TLS/SSL 连接,使 HTTPS 流量能够通过 HTTP 代理。CONNECT 既不安全也不可缓存。

RFC 9110, Section 9.3.6
示例
CONNECT api.example.com:443 HTTP/1.1
Host: api.example.com:443
Proxy-Authorization: Basic dXNlcjpwYXNz

相关指南

在 RequestDock 中试试

发送真实的 HTTP 请求并检查响应——直接在浏览器中完成。