【发布时间】:2012-02-15 04:21:05
【问题描述】:
我的服务需要一些实体并且需要保存/更新这个实体:
http://myhost.com/rest/entity
我使用 POST 并提交 JSON。在服务内部,它检测到传递的实体不好。无效,与不存在的客户一起传递的订单等。
我该如何回复? HttpCode.NotFound?还是其他人?你怎么回复这样的事情?
【问题讨论】:
-
嗯,这完全由您决定,这是您的服务。
我的服务需要一些实体并且需要保存/更新这个实体:
http://myhost.com/rest/entity
我使用 POST 并提交 JSON。在服务内部,它检测到传递的实体不好。无效,与不存在的客户一起传递的订单等。
我该如何回复? HttpCode.NotFound?还是其他人?你怎么回复这样的事情?
【问题讨论】:
在我们的项目中,在这种情况下,我们会执行以下操作:
{"message":"%extended error message here%"}
但这真的很主观。
我还建议阅读This blog article on RESTfull error handling - 它描述了许多可用的选项,因此您可以根据自己的喜好选择一些东西。
【讨论】:
我认为你应该选择client error code。 400 Bad Request 或 403 Forbidden 可能是一个好的开始
【讨论】:
422 Unprocessable Entity, defined in WebDAV (RFC 4918):
422(Unprocessable Entity)状态码表示服务器理解请求实体的内容类型(因此 415(Unsupported Media Type)状态码是不合适的),并且请求实体的语法是正确的(因此 400 (错误请求)状态代码不合适)但无法处理包含的指令。例如,如果 XML 请求正文包含格式正确(即语法正确)但语义错误的 XML 指令,则可能会发生这种错误情况。
【讨论】: