HTTP 请求方法详解
HTTP 共定义了九种标准请求方法,但日常流量大多只用其中几种。下表说明每种方法的作用、是否安全与幂等,以及成功调用时返回的状态码。
| 方法 | 用途 | 安全? | 幂等? | 成功状态 |
|---|---|---|---|---|
| GET | Retrieve a resource | Yes | Yes | 200 OK |
| HEAD | Retrieve headers only, no body | Yes | Yes | 200 OK |
| POST | Create a resource or trigger an action | No | No | 201 Created |
| PUT | Replace a resource entirely | No | Yes | 200 OK / 204 No Content |
| PATCH | Apply a partial update | No | No | 200 OK |
| DELETE | Remove a resource | No | Yes | 200 OK / 204 No Content |
| OPTIONS | CORS preflight; list allowed methods | Yes | Yes | 204 / 200 OK |
| TRACE | Echo the request back for diagnostics | Yes | Yes | 200 OK |
| CONNECT | Open a tunnel, e.g. HTTPS via a proxy | No | No | 200 OK |
说明
- “安全”指方法不会改变服务器状态:GET、HEAD、OPTIONS 与 TRACE 是仅有的四种安全方法。
- “幂等”指重复调用与调用一次结果相同:PUT、DELETE、GET 符合;POST 与 PATCH 不符合。
- 当路由不接受某个方法时,服务器会返回 405 Method Not Allowed,通常还带 Allow 响应头。
常见问题
- GET 和 POST 有什么区别?
- GET 只读取资源、没有副作用,可安全重复;参数放在 URL 里。POST 用于创建资源或触发动作,可能改变状态,不应盲目重复提交。
- “安全”的 HTTP 方法是什么意思?
- 安全方法不会修改服务器状态,因此调用没有风险。GET、HEAD、OPTIONS、TRACE 是安全的;POST、PUT、PATCH、DELETE 不安全。
- PUT 和 PATCH 有什么区别?
- PUT 用发送的整个内容替换资源;PATCH 只对部分字段做局部修改。PUT 幂等,重复调用结果相同;PATCH 一般不幂等。
- HEAD 方法有什么用?
- HEAD 与 GET 类似,但不返回响应体。适合用来检查资源是否存在、大小或响应头,而不必下载完整内容。