rest的API查询结果为null,返回404还是200?

2023-01-10 12:25:15

今天和同事争论一个比较有意思的问题:

restful风格的API查询结果为null,返回404还是200?

 

最后,也没出来一个结果,反正我之前返回的都是404HTTP状态码。最终反正肯定要统一的,慢慢在讨论吧。

我给出为什么要使用404状态码我的理解:

先看百度 -- > 404状态码:所请求的页面不存在或已被删除!


根据百度,我们可以思考一个问题,页面是什么?
页面肯定是通过后端的数据渲染出来的,数据即代表资源。
所以页面是资源的载体。
还有什么是资源?文件、图片、视频、音频甚至一段字符串都可以代表资源。
资源也肯定不是一张表(同事的观点:认为资源是一张表),是实实在在的数据。

在看看什么是restful风格的api :首先,restful风格的api的uri就是代表资源 ,采用动词 + 宾语 , 动词代表GET(获取)/POST(新增)/PUT(全量修改)/DELETE(删除)/PATCH(部分修改)等等,宾语就是资源。比如:POST /users:代表新增一个用户 ,GET /users:获取所有用户

而状态码即代表我们动宾后结果的状态。
404在restful中代表:所请求的资源不存在,或不可用。
那么我们的rest的api结果为null返回404难道有错吗?

而且后端返回404时,也会把对应的message写到响应体中,什么原因,是查询为null、还是url不存在~


至于有些人说前端人员接受不了404,我觉得那是前端问题,不是后端问题。
还有人说封装成自定义code,那你还用什么restful风格api,直接自定义code和message处理多方便。


但是目前很多用户对404的理解不够深,一看到404就觉得有问题,所以后端人员表示很无奈,出于对用户使用的友好,不得不在后端把404改成200,或者前端去特殊处理一下404。

------------------------------------------------------------------------------------------------------------------------------------

以上仅代表我的个人观点,欢迎大家讨论(讨论也可以是辩论,但不是吵架^-^):rest的API查询结果为null,返回404还是200?

  • 作者:-小末
  • 原文链接:https://blog.csdn.net/u013189824/article/details/95493764
    更新时间:2023-01-10 12:25:15