HTTP 请求方法

基础概念

HTTP 请求的结构

请求方法 请求URI HTTP版本
请求头
空行
请求体

HTTP 方法分类

类别 方法 说明
安全方法 GET, HEAD, OPTIONS 不应修改资源
幂等方法 GET, HEAD, PUT, DELETE, OPTIONS 多次执行效果相同
可缓存方法 GET, HEAD, POST 响应可被缓存

核心方法详解

1. GET - 获取资源

GET /api/users/123 HTTP/1.1
Host: example.com
Accept: application/json
  • 用途:获取资源,不应有副作用
  • 幂等性:✅ 是
  • 安全性:✅ 是
  • 可缓存:✅ 是
  • 请求体:通常为空
  • 响应体:包含请求的资源

2. POST - 创建资源

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 45

{"name": "John", "email": "john@example.com"}
  • 用途:提交数据,通常创建新资源
  • 幂等性:❌ 否(多次调用可能创建多个资源)
  • 安全性:❌ 否
  • 可缓存:仅在明确指定时
  • 典型场景
    • 创建新资源
    • 提交表单数据
    • 上传文件

3. PUT - 替换资源

PUT /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 45

{"name": "John", "email": "john@example.com"}
  • 用途:完全替换目标资源
  • 幂等性:✅ 是
  • 安全性:❌ 否
  • 可缓存:❌ 否
  • 特点:客户端提供完整的资源表示

4. PATCH - 部分更新

PATCH /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json-patch+json
Content-Length: 36

[{"op": "replace", "path": "/name", "value": "Jane"}]
  • 用途:对资源进行部分修改
  • 幂等性:取决于实现
  • 安全性:❌ 否
  • 可缓存:❌ 否
  • 内容格式
    • JSON Patch(RFC 6902)
    • JSON Merge Patch(RFC 7396)
    • 自定义格式

5. DELETE - 删除资源

DELETE /api/users/123 HTTP/1.1
Host: example.com
  • 用途:删除指定资源
  • 幂等性:✅ 是(删除一次与删除多次效果相同)
  • 安全性:❌ 否
  • 可缓存:❌ 否

6. HEAD - 获取头部信息

HEAD /api/users/123 HTTP/1.1
Host: example.com
  • 用途:只获取响应头,不获取响应体
  • 幂等性:✅ 是
  • 安全性:✅ 是
  • 可缓存:✅ 是
  • 典型用途
    • 检查资源是否存在
    • 获取资源的元数据(大小、类型等)
    • 验证缓存是否有效

7. OPTIONS - 查询支持的方法

OPTIONS /api/users HTTP/1.1
Host: example.com

响应示例:

HTTP/1.1 200 OK
Allow: GET, POST, PUT, DELETE, OPTIONS
  • 用途:查询服务器对某资源支持的方法
  • 幂等性:✅ 是
  • 安全性:✅ 是
  • CORS预检请求:浏览器自动发送

8. TRACE - 回显请求

TRACE /api/users HTTP/1.1
Host: example.com
  • 用途:诊断,服务器返回收到的原始请求
  • 安全性:⚠️ 注意XST攻击(跨站追踪)
  • 实际应用:调试代理链

9. CONNECT - 建立隧道

CONNECT proxy.example.com:443 HTTP/1.1
Host: proxy.example.com:443
  • 用途:建立到目标服务器的隧道(主要用于HTTPS代理)
  • 安全性:❌ 否

其他方法

LINK </images/logo.png>; rel=preload HTTP/1.1
UNLINK </images/logo.png> HTTP/1.1
  • 建立/删除资源间关系(HTTP/1.1定义,但很少实现)

11. PURGE(缓存相关)

  • 专用于缓存服务器(如Varnish、Squid)
  • 清除缓存中的指定资源

12. LOCK & UNLOCK(WebDAV)

LOCK /documents/report.txt HTTP/1.1
UNLOCK /documents/report.txt HTTP/1.1
  • WebDAV扩展,用于文件锁定机制

方法特性对比

方法 幂等 安全 可缓存 请求体 响应体 主要用途
GET 不应有 获取资源
POST 有时 创建资源
PUT 替换资源
PATCH 可能 部分更新
DELETE 可能有 可能有 删除资源
HEAD 不应有 获取头信息
OPTIONS 不应有 查询方法
TRACE ⚠️ 不应有 诊断
CONNECT 建立隧道
posted @ 2026-01-04 22:44  ffff5  阅读(14)  评论(0)    收藏  举报