如果无法删除记录,应从WebAPI删除操作返回什么Http状态代码?

时间:2017-09-14 13:18:34

标签: asp.net-mvc rest asp.net-web-api

如果由于数据库完整性而无法从数据库中删除记录,那么应该从HttpDelete操作返回什么Http Status代码?

403 - 禁止

405 - 不允许使用方法

409 - 冲突

...

1 个答案:

答案 0 :(得分:1)

从我的角度来看 HTTP代码409 。 RFC没有说明这个具体情况,但也没有拒绝它。

https://tools.ietf.org/html/rfc7231#section-6.5.8

  

409(冲突)状态代码表示请求不能   由于与目标的当前状态发生冲突而完成   资源。此代码用于用户可能的情况   解决冲突并重新提交请求。服务器应该   生成包含足够用户信息的有效负载   认识到冲突的根源。

来源: REST HTTP status code if DELETE impossible

为什么我认为403和405不合适?

  • 403 - 禁止。它与权限有关。但是您描述的场景发生在身份验证/授权之后。
  • 405 - 不允许使用方法。这通常与端点暴露的“对象”有关,它接受X个动词,并且您请求的动词不可用。在完整性检查等确定的情况下抛出此错误会使RESTful逻辑混乱。