无效数据的适当REST响应代码是什么?

What is the appropriate REST response code for invalid data?

我有REST方法来更新用户个人资料。如果某些参数无效,系统应返回哪个状态码?或者,例如,如果旧密码和DB中的密码不相等,则更改密码。
400错误的请求?


您所描述的内容可以并且应该使用两种不同的响应代码来处理,如Richardson和Ruby的Book RESTful网络服务中所述:

400错误的请求

通常在客户端与PUT或POST请求一起提交表示形式且表示形式正确时使用,但这没有任何意义。因此,将其用于缺少或无效的参数是完全可以的。

但是一般的客户端错误代码为400,因此您绝对应该在响应正文中向客户端提供一些其他信息。

409冲突

服务器无法执行的任何请求,因为它将使一个或多个资源处于不一致状态。因此,当用户尝试更改其密码并且与您所描述的旧密码比较失败时,我将使用此响应代码。

您也可以查看此讨论的REST HTTP状态代码,以确认验证失败或无效重复。