HTTP method 陈述你对某个 resource 的意图;status code 是服务器编码化的答复。method 有两个重要属性:safe(只读、无副作用)和 idempotent(重复它得到相同结果——对安全重试很重要)。
| Method | 用途 | Safe | Idempotent |
|---|
| GET | 读取一个 resource | Yes | Yes |
| POST | 创建 / 触发一个动作 | No | No |
| PUT | 替换一个 resource | No | Yes |
| PATCH | 部分更新 | No | No* |
| DELETE | 移除一个 resource | No | Yes |
| HEAD | 类似 GET,仅头部 | Yes | Yes |
idempotency 的区别很实用:因为 PUT 和 DELETE 是 idempotent 的,客户端可以在超时后安全地重试它们;而重试一个非 idempotent 的 POST 有创建重复的风险(一个经典的重复扣款 bug)。
status code 按其首位数字分组:
1xx Informational request received, continuing (100 Continue, 101 Switching)
2xx Success it worked (200 OK, 201 Created, 204 No Content)
3xx Redirection go elsewhere (301 Moved, 304 Not Modified)
4xx Client error YOUR request is wrong (400, 401, 403, 404, 429)
5xx Server error the SERVER failed (500, 502, 503, 504)
最重要的一条线是 4xx vs 5xx 的划分:4xx 意味着客户端发了错的东西(输入不对、未认证、未找到)——原样重试没有用;5xx 意味着服务器失败了——重试(带退避)可能成功。要把日常那些烂熟于心:401(未认证)vs 403(已认证但不被允许)、404(未找到)、429(被限流)、500(通用服务器崩溃)、502/503/504(bad gateway / 不可用 / gateway timeout——通常是上游或过载问题)。
这些码是每个客户端与服务器之间的共同契约,因此在这方面的娴熟是对任何构建或使用 API 的人的期待。面试官探查那些揭示真正理解的区别:401 vs 403、PUT vs PATCH,尤其是 idempotency,它直接决定重试是否安全——这是分布式系统和支付流程中的核心关切。返回正确的 status code 也让你的 API 可预测,并被缓存、proxy 和客户端库正确处理,因此这一知识塑造良好的 API 设计,而不只是琐碎常识。
一个包含详细解答的 IT 面试题库——从初级到高级。
捐赠