查(Read) → GET
增(Create) → POST
改(Update) → PUT / PATCH
删(Delete) → DELETE
幂等性 :多次执行结果相同
安全性:不修改服务器状态
1. GET - 获取资源
-
作用:从服务器获取指定资源
-
特点:
-
幂等(多次请求结果相同)
-
可缓存
-
参数暴露在 URL 中(有长度限制)
-
无副作用(只读操作)
-
-
示例 :
GET /users/123获取ID为123的用户信息
2. POST - 创建资源
-
作用:向服务器提交数据,创建新资源
-
特点:
-
非幂等(多次提交会创建多个资源)
-
数据在请求体(Body)中传输
-
无缓存
-
-
示例 :
POST /users创建新用户,数据:{"name":"张三"}
3. PUT - 全量更新
-
作用:完整替换目标资源
-
特点:
-
幂等
-
需提供资源的完整表示
-
不存在则创建(取决于实现)
-
-
示例 :
PUT /users/123替换ID为123的用户全部信息
4. PATCH - 局部更新
-
作用:对资源进行部分修改
-
特点:
-
非幂等(可能,视具体实现)
-
只发送需要修改的字段
-
节省带宽
-
-
示例 :
PATCH /users/123仅修改邮箱:{"email":"new@example.com"}
表格
| 对比 | PUT | PATCH |
|---|---|---|
| 更新范围 | 完整替换 | 局部修改 |
| 未提供字段 | 被清空/设为默认值 | 保持不变 |
| 请求体大小 | 较大 | 较小 |
5. DELETE - 删除资源
-
作用:删除指定的资源
-
特点:
-
幂等(删除一次和多次结果相同)
-
不可恢复(通常)
-
-
示例 :
DELETE /users/123删除ID为123的用户
6. HEAD - 获取元信息
-
作用:与 GET 相同,但只返回响应头,不返回响应体
-
特点:
-
幂等
-
用于检查资源是否存在、获取文件大小(无需下载内容)
-
-
示例 :
HEAD /large-file.zip获取文件大小,判断是否需要更新
7. OPTIONS - 查询支持的方法
-
作用:查询服务器支持的 HTTP 方法和其他选项
-
特点:
-
幂等
-
常用于 CORS 预检请求
-
-
示例 :
OPTIONS /users返回Allow: GET, POST, HEAD, OPTIONS
8. TRACE - 回显测试
-
作用:服务器将收到的请求原样返回,用于诊断
-
特点:
- 存在安全风险(XST 攻击),通常被禁用
-
现状:生产环境基本禁用
9. CONNECT - 建立隧道
-
作用:与服务器建立网络连接(主要用于 HTTPS 代理)
-
示例 :
CONNECT www.example.com:443建立 SSL 隧道
核心属性对比
表格
| 方法 | 幂等性 | 安全性 | 可缓存 | 请求体 |
|---|---|---|---|---|
| GET | ✓ | ✓ | ✓ | ✗ |
| POST | ✗ | ✗ | ✗ | ✓ |
| PUT | ✓ | ✗ | ✗ | ✓ |
| PATCH | ✗ | ✗ | ✗ | ✓ |
| DELETE | ✓ | ✗ | ✗ | ✗ |
| HEAD | ✓ | ✓ | ✓ | ✗ |
| OPTIONS | ✓ | ✓ | ✗ | ✗ |
Q:POST 和 PUT 有什么区别?
-
POST 用于创建,由服务器分配新资源 URI
-
PUT 用于创建或更新,客户端指定完整 URI
Q:PATCH 和 PUT 选哪个?
-
修改全部字段 → PUT
-
修改部分字段 → PATCH(更灵活、高效)
Q:GET 能传 Body 吗?
- 语法上允许,但语义不推荐,且部分服务器/代理会忽略 GET 的 Body