来自ASP.NET Web API的正确响应代码当Delete由于其他依赖性而失败时删除操作

时间:2014-02-08 06:42:45

标签: asp.net-web-api httpresponse http-response-codes

在我的ASP.NET WEB API控制器中,我公开了相当于HTTP谓词的操作: - Post,Put,Get和Delete,如下所示: -

PostLocation
PutLocation
DeleteLocation
GetLocation
GetAllLocations

Location对象在另一个名为Devices的对象中引用,该对象指示设备的安装位置。

现在,当我使用位置ID调用DeleteLocation操作时,只有在任何设备中未引用该位置时,删除才会成功。如果在任何设备中引用它们,则“删除”操作应发送一个响应,指示该位置已被引用且无法删除。

我的问题是: - 应该从删除操作发送的正确的HttpResponse代码是什么,以指示由于此类引用而导致的失败以及响应正文中应该提供什么?

1 个答案:

答案 0 :(得分:0)

我会看HTTP 400 Bad Request或409冲突。您的电话最适合您的情况。

对于响应主体,无论您返回什么消息,都应尽可能详细。错误应该是异常,所以分配这些额外的字节以尽可能地帮助开发人员。

我们使用的JSON结构,借鉴了apigee的人们给出的建议。

  • 消息 - 可以向实际用户显示的友好描述性消息
  • developerMessage - 为开发人员保存查找doco的更合适的消息
  • 代码 - 用于扩展HTTP代码的自定义错误代码
  • moreInfo - 文档的URL

检查apigee blog"Rest API tutorial",了解有关错误和状态代码的详细信息。