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

Asp.net mvc 如果无法删除记录,WebAPI删除操作应返回什么Http状态代码?,asp.net-mvc,rest,asp.net-web-api,Asp.net Mvc,Rest,Asp.net Web Api,如果由于数据库完整性而无法从数据库中删除记录,HttpDelete操作应返回什么Http状态代码 403-禁止 405-不允许使用方法 409-冲突 在我看来,HTTP代码409。 RFC没有说任何关于这种具体情况的话,但也没有拒绝 409(冲突)状态代码表示无法处理请求 由于与目标的当前状态冲突而完成 资源。此代码用于用户可能能够 解决冲突并重新提交请求。服务器应该 生成包含足够信息的有效负载,以便用户能够 认识到冲突的根源 资料来源: 为什么我认为403和405不合适 403-禁止。它

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

403-禁止

405-不允许使用方法

409-冲突


在我看来,HTTP代码409。 RFC没有说任何关于这种具体情况的话,但也没有拒绝

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

资料来源:

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

  • 403-禁止。它与权限有关。但您描述的场景发生在身份验证/授权之后
  • 405-不允许使用方法。这通常与端点公开的“对象”有关,它接受X个动词,而您请求的动词不可用。在确定的情况下(如完整性检查)抛出此错误将使RESTful逻辑感到困惑

为什么堆栈溢出会充斥着“使用哪种状态代码”的问题?你不能自己决定吗?你的研究表明了什么?