RESTful服务,验证失败后如何响应?

时间:2012-01-20 15:57:53

标签: http rest

我的服务需要一些实体,需要保存/更新这个实体:

http://myhost.com/rest/entity

我使用POST并提交JSON。在内部服务中,它检测到传递的实体不好。无效,订单传入不存在的客户等等。

我该如何回复? HttpCode.NotFound?或者其他人?你怎么回答这些事情?

3 个答案:

答案 0 :(得分:29)

422 Unprocessable Entity, defined in WebDAV (RFC 4918)

  

422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码不合适),并且请求实体的语法是正确的(因此400 (错误请求)状态代码不合适)但无法处理包含的指令。例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能会出现此错误情况。

答案 1 :(得分:25)

在我们的项目中,我们执行以下操作:

  1. 将响应代码设置为HTTP 400 Bad Request
  2. 将响应正文设置为以下JSON:{"message":"%extended error message here%"}
  3. 但这确实非常主观。

    此外,我建议阅读This blog article on RESTfull error handling - 它描述了许多可用的选项,因此您可以根据自己的喜好选择一些内容。

答案 2 :(得分:1)

我认为你应该选择client error code 400 Bad Request 403 Forbidden 可以是一个好的开始