场景获取用户聊天信息 : GET /messages?user=1
如果该用户没有聊天记录,那返回数据时应该返回200的空值还是404不存在?
200成功
{
"status": 200 #HTTP状态码
"message": "ok"
"data" : []
}
404错误
{
"status":404 #HTTP状态码
"message":"数据不存在"
"error_code":1000
}
2018/12/4更新:
参考了豆瓣和GitHub的似乎这两种都有用
豆瓣:https://api.douban.com/v2/boo...
获取不到图书时返回404
GitHub:https://api.github.com/search...:Ruan Yifeng3
这个因使用者的偏好而异吧,有的是通过响应体的格式来约束的,有的是通过 http status code + 响应体来约束的。
因为你有提及 rest,所以用 404 其实没什么问题的,rest 本来就有意将 http method 和 http status 与资源关联起来,别的答案有提及返回 404 无法分清接口层面和资源层面的不存在问题,这个 404 状态的请求也是可以回传 body 的呀,有什么分不清的呢?还有说涉及安全问题的更远了吧,4xx 是指 Client Error,是不会直接返回错误堆栈信息的,如果要说用户体验的话,会影响一些,不过可以通过自定义 4xx 的响应页面来改善。
使用 200 的话,也没有什么绝对意义上的错误,只是一种习惯而已,据我所知,腾讯大部分接口均是按照 200 这种消息格式来传达的。所以因地制宜吧,看是偏向于使用哪种,但是切记不要混用,容易产生混乱。
另外再说一点,如果前端一直期望于返回 200 状态的接口,而忽视错误处理的话,其实并没有什么好处。