标准答案
- GET、HEAD、OPTIONS 通常是安全方法,应该只读取资源;日志、访问计数等附带行为不应改变业务语义。
- PUT 和 DELETE 通常设计为幂等:多次把资源替换为同一表示,或多次删除同一资源,最终状态应一致。
- POST 通常用于创建、提交命令或触发动作,默认不保证幂等;支付、下单等 POST 接口需要额外的幂等机制。
- DELETE 第二次返回 404 并不一定破坏幂等性,关键是资源最终仍处于已删除状态;具体响应契约需要提前定义。
- 安全和幂等不等于无需鉴权、无需参数校验,也不代表网络重试一定安全。
题目解析
HTTP 方法表达的是调用者和服务端对行为的共同约定。把删除动作藏在 GET 中会破坏缓存、预取、爬虫和审计的预期。
幂等语义让超时后的重试更可控,但业务层仍需处理并发、请求体一致性和重复响应返回。
常见误区
- 认为 GET 绝对不会产生任何写入,忽略业务语义和必要的审计行为之间的边界。
- 把 PUT 当成“任意更新”的同义词,却没有定义完整替换还是局部更新。
- 因为使用 POST 就放弃设计重复提交防护。