【发布时间】:2012-12-12 10:32:06
【问题描述】:
我目前正在构建一个 Web API,并且有一个特定的场景,我无法确定哪个 HTTP 状态代码最适合返回。
情景
我有一个“客户”资源,它拥有一组联系人资源。
不变的是客户必须始终至少有一个联系人。因此,如果请求删除联系人并且此联系人是给定客户端的最后一个联系人,我需要返回一个适当的 HTTP 响应,指示该请求无法完成,因为您“无法删除最后一个联系人”。
我的感觉是这应该属于“4xx客户端错误”的范畴
我考虑过以下状态代码:
400 Bad Request - 我已经排除了这一点,因为它专门针对服务器无法理解的格式错误的请求。
405 Method Not Allowed - 起初这似乎很合适,但我认为 405 表示永远不应该允许这种方法,但上述情况只是暂时的。想法?
409 冲突 - 我一直倾向于这样做,但是为此代码给出的常见示例通常是并发异常/编辑冲突。
有人对我在这种情况下应该如何应对有任何指导吗?
【问题讨论】:
-
409在这种情况下得到我的投票,因为这是用户可以解决的冲突。常见的例子是别的东西对我来说并不重要,像这样的其他例子是存在的。400确实是正确的,但是如果您使用实际的DELETE请求,405有话要说...如果不是,我说 409,但如果您这样做...我看到了您的困境。跨度> -
是的,我在这里使用的是 DELETE 动词,但我认为 405 表示该方法应该从不在给定资源上被允许。
标签: rest http-status-codes asp.net-web-api