无法处理请求的HTTP状态代码

时间:2016-09-23 14:20:08

标签: rest http http-status-codes

delete端点发出/api/ingredients/123请求。

如果成分123不存在,我希望我应该返回404 Not Found状态代码。同意?

如果成分123确实存在,但在现有配方中使用,则无法删除。应该返回什么状态代码?

3 个答案:

答案 0 :(得分:1)

409 Conflict

由于与当前冲突,请求无法完成 资源状态。仅在以下情况下才允许使用此代码 预期用户可能能够解决冲突,并且 重新提交请求。响应正文应包含足够的内容 供用户识别冲突源的信息。 理想情况下,响应实体应包括足够的信息,以便 用户或用户代理来解决问题;但是,那可能不是 可能,并非必需。

在您的情况下,不能删除一种或多种配方中使用的配料(资源状态冲突)。但是一旦成分失效,就可以将其删除。

答案 1 :(得分:0)

304未修改,也许?或者,412 Precondition Failed。

这里有一个状态代码定义列表:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

我认为对这个问题的任何答案都是30%的技术性,70%的意见。

答案 2 :(得分:0)

Re:HTTP状态代码,以响应成分123不存在的条件[并且从未存在];是的,我同意404 - Not Found - 是正确的。

如果成分123确实存在并且现在已被删除,那么410 - Gone - 是合适的。 (我的网站使用过时产品的410状态代码。)

但是,您的案例中存在成分123,但由于数据依赖性冲突("现有的配方")无法处理该特定成分的删除请求。对于这种情况,405 - 方法不允许 - 是合适的。

HTTP状态405表示成分参考是OK,但不是删除请求。

Wikipediaw3.org在HTTP状态代码上提供了有用的页面。