我想知道在我的REST API中应该如何响应。
有效示例:
http://blah.com/api/v1/dosomething/123
上述是一个有效的请求,目前我收到了HTTP状态码200和JSON响应。
{
"dosomething": {
"status": "OK",
"results": "123"
}
}
现在我的问题是,如果传递的参数无效(我期望一个整数字符串),那么我是应该返回HTTP 200响应并在JSON响应中传回错误状态,还是应该传递类似于HTTP 400响应(坏请求),并在JSON响应中列出请求的错误/问题?
错误示例:
http://blah.com/api/v1/dosomething/123a
JSON响应:
{
"dosomething": {
"status": "ERROR",
"errors": [
"Value passed: |123a| must be a integer."
]
}
}
我再次提问:当传递的参数不符合我的预期时,我应该传递200还是400 HTTP状态?还是说这个请求总是应该返回200响应码,因为它已经在工作?
什么是最佳实践?