10 回答
![?](http://img1.sycdn.imooc.com/545862fe00017c2602200220-100-100.jpg)
TA贡献3条经验 获得超1个赞
我觉得如果是数据不存在,状态码(http status)返回200要好一些。因为如果返回404则有点觉得这个接口不存在,而不是数据不存在。然后消息体再来说明数据找不到,比如:
而真正找不到接口、页面,则由服务自己就抛出了404异常(当然你可以去捕获,然后稍作处理)
![?](http://img1.sycdn.imooc.com/54584ef20001deba02200220-100-100.jpg)
TA贡献1865条经验 获得超7个赞
建议不要返回404,因为把HTTP 这些状态暴露给用户会有安全性问题,就等于告诉用户这次请求会发生什么了。可以都返回200.或者 内部统一定义一套,比如:返回10000 代表密码错误等
![?](http://img1.sycdn.imooc.com/545866c40001561502200220-100-100.jpg)
TA贡献1883条经验 获得超3个赞
这个因使用者的偏好而异吧,有的是通过响应体的格式来约束的,有的是通过 http status code + 响应体来约束的。
因为你有提及 rest,所以用 404 其实没什么问题的,rest 本来就有意将 http method 和 http status 与资源关联起来,别的答案有提及返回 404 无法分清接口层面和资源层面的不存在问题,这个 404 状态的请求也是可以回传 body 的呀,有什么分不清的呢?还有说涉及安全问题的更远了吧,4xx 是指 Client Error,是不会直接返回错误堆栈信息的,如果要说用户体验的话,会影响一些,不过可以通过自定义 4xx 的响应页面来改善。
使用 200 的话,也没有什么绝对意义上的错误,只是一种习惯而已,据我所知,腾讯大部分接口均是按照 200 这种消息格式来传达的。所以因地制宜吧,看是偏向于使用哪种,但是切记不要混用,容易产生混乱。
另外再说一点,如果前端一直期望于返回 200 状态的接口,而忽视错误处理的话,其实并没有什么好处。
- 10 回答
- 0 关注
- 2687 浏览
添加回答
举报