2013-06-24 73 views
2

我有REST方法来更新用户配置文件。如果某些参数无效,系统应该返回哪个状态码?或者,例如,要更改密码,如果旧密码和DB中的密码不相等。 400错误的请求?无效数据的适当REST响应代码是什么?

+1

这不是一个错误的请求,这是一个有效的业务错误,这意味着200与一些错误信息 – JoseK

+2

完全不同意200,这应该肯定是400范围内的东西。请参阅http://stackoverflow.com/questions/4781187/http-400-bad-request-for-logical-error-not-malformed-request-syntax – Jon

+0

你需要更多的帮助吗? – benjiman

回答

4

你描述能做什么和应使用两种不同的响应代码从理查森和Ruby的书RESTful webservices描述进行处理:

400错误的请求

这通常用于当客户端提交表示以及PUT或POST请求,并且表示格式正确,但没有任何意义。所以将它用于缺失或无效的参数是完全可以的。

然而,400是通用客户端错误代码,您应该在响应主体中为客户端提供一些其他信息。

409冲突

不能由服务器来执行,因为它会处于不一致的状态留一个或多个资源的任何请求。所以我会在用户尝试更改密码时使用此响应代码,并按照您所描述的与旧密码的比较失败。

你也可以看看这个讨论REST HTTP status codes for failed validation or invalid duplicate

相关问题