[讨论] API没资料,回200还是404比较好

楼主: Geison (Angels)   2022-06-22 10:38:22
我看有些是状态码200,空data
但有些又是做404,然后回个message 数据不存在之类的
这哪一种做法比较好?
作者: ntpuisbest (阿龙)   2022-06-22 10:48:00
加个Status判断是否为空会好点吗?
作者: vi000246 (Vi)   2022-06-22 10:49:00
200啊 是说这问题你可以问同事吧
作者: CaptPlanet (ep)   2022-06-22 10:50:00
200
作者: godddddd (howudoing)   2022-06-22 10:50:00
Body empty 204Error code 404Success and return body 200前公司用这样表示
作者: bheegrl   2022-06-22 10:54:00
200,回404我会觉得没打到,当然这个可以谈的
作者: LINGZ (肥兔小钦)   2022-06-22 10:56:00
回404,怎么跟api不存在区别?
作者: Romulus (Säubern Mode)   2022-06-22 11:10:00
看没资料的物理意义 如果是他不能没有但是没有就400/404如果没有资料是正常状况就回200空data 不推荐204204比较像是那种永远不会有回传的API回的另外404纯留给打错path/API不存在比较好懂
作者: giacch   2022-06-22 11:13:00
RESTful的锅
作者: bronx0807 (坚持需要练习)   2022-06-22 11:29:00
200 有找到资源,但该资源返回空资料
作者: gura9527 (拉拉)   2022-06-22 11:39:00
http status不是这样用的
作者: devilkool (对猫毛过敏的猫控)   2022-06-22 11:40:00
怎么会用404....
作者: aidansky0989 (alta)   2022-06-22 11:46:00
看错误原因,通常是200给reason或403
作者: z56562337   2022-06-22 11:46:00
404 只会觉得 url 打错吧
作者: alihue (wanda wanda)   2022-06-22 11:54:00
你不会多一个 numFound 逆
作者: popmentos (汽水 + 曼陀珠)   2022-06-22 12:04:00
看收到空值后,你的后续动作是什么,状态码提示你之后要导向哪个动作。
作者: bill0205 (善良的小孩没人爱)   2022-06-22 12:12:00
当然是200..404是针对path不存在而不是资料不存在除非你说是像这样/{id} 没资料给404合理(?!
作者: mike8469 (mike8469)   2022-06-22 12:34:00
200, 400-499 用在用户端错误
作者: yutou88 (yutoueeb)   2022-06-22 12:34:00
404会觉得url打错+1
作者: longlongint (华哥尔)   2022-06-22 12:50:00
预料之内 200 预料之外 404200 功能正常,查无此资料404 有点像在反问 caller 你在做什么
作者: Lhmstu (lhmstu)   2022-06-22 12:53:00
200吧
作者: youtuuube000 (小孩)   2022-06-22 12:55:00
推10楼
作者: Hsins (翔)   2022-06-22 13:09:00
如果是以 RESTful 角度去设计的话,举 /users/<USERNAME>为例,当 <USERNAME> 的资源不存在时,返回状态码 404比较其他状态码:401 (没有授权) 403 (有授权但权限不够)... 参考 GitHub REST API 的实现也是这样做的可是具体还是要看实际场景需不需要这些今天如果是请求 HTML 页面资源的话,早年没东西塞 200 会在 SEO 上被降 ranking
作者: EEeliteEE (elite)   2022-06-22 13:38:00
视你组织 code style 而定
作者: opliya (Marzz)   2022-06-22 13:51:00
200 status fail
作者: luke72 (ccc)   2022-06-22 13:59:00
REST API的精神是要回归http status code,回404但是相关配套的程式如果处理不好容易出错,不如回200
作者: Romulus (Säubern Mode)   2022-06-22 14:02:00
应该只有403是不行的ㄅ
作者: Jichang (C.C.Lemon)   2022-06-22 14:14:00
json 的空 是什么意思
作者: lturtsamuel (港都都教授)   2022-06-22 14:27:00
空的当然是200阿 我前公司就用404 导致一堆问题 超白痴api不存在应该也不是404 400比较对 404像是你用名字或id去查结果数据库没这东西
作者: ssccg (23)   2022-06-22 14:37:00
restful来说是404没错啊,只是现在人看到404就觉得网址错原始http规格就整个URI代表资源,把404限缩到path未实作的反而是后来各种web framework,只是错的人多了就变对的了
作者: ChungLi5566 (中坜56哥)   2022-06-22 15:22:00
如果乱打还回200 会被弱扫工具判断成有弱点
作者: adsl12367 (adsl12367)   2022-06-22 15:26:00
200 msg放查无资料
作者: lturtsamuel (港都都教授)   2022-06-22 15:26:00
假设是一个论坛 你要找一个看板的文章 给错看板id那叫做404 有这个看板但没有文章 那叫做200 就这样
作者: cloudsan (趴千)   2022-06-22 16:12:00
搜寻无结果200,查询不存在的使用者404
作者: TheArrow (TheArrow)   2022-06-22 16:42:00
我都传204^_^
作者: MyNion (Nion Lee)   2022-06-22 16:49:00
请求成功但response空body,回传204或是手工点,传200 + 字串"没有内容"
作者: sharek (...)   2022-06-22 16:56:00
推文看下来似乎没有标准?内部讨论好就好了是吗
作者: Romulus (Säubern Mode)   2022-06-22 17:00:00
是 其实没有很硬的标准 尤其内部的话真的协调好就好
作者: crazycy (LCY)   2022-06-22 17:00:00
RESTful的话 查询不存在的ID之类的话就404阿
作者: johnny94 (32767)   2022-06-22 17:32:00
资源不存在跟资源存在只是目前没有的差别
作者: superpandal   2022-06-22 18:59:00
只爱用两种状态 错误给原因 前端管理错讯息是冏的 有的还前后端都维护一套更冏
作者: mathrew (Joey)   2022-06-22 19:00:00
你的案例404很怪,404直觉就是错误的URL
作者: now99 (陈在天)   2022-06-22 19:35:00
发生系统错误不也404,你要怎么分辨不如rtnCode 处理
作者: TheWhack (我是德华)   2022-06-22 19:40:00
200比较适合,因为路径无误,而且空资料也是一种资料
作者: quickey (色肥宅)   2022-06-22 19:40:00
404吧 回啥小200
作者: Hsins (翔)   2022-06-22 19:43:00
发生系统错误哪会是 404?拜托不要误导人
作者: pilor (Formosa)   2022-06-22 19:46:00
自己觉得如果是用id找不到回404如果是搜寻资料这种会多笔的用200然后是空资料
作者: rollr (衛生紙的心情)   2022-06-22 19:54:00
回404的可以 fired 了
作者: pokemonmen (神骑大师)   2022-06-22 20:12:00
有成功就2 开头 我以为是这样
作者: moom50302 (武林三羚鳄)   2022-06-22 20:45:00
回404来乱的吗?
作者: yoyo930021 (yoyo930021)   2022-06-22 21:11:00
我的习惯是 user/{id} 是 404 list 的话 200 空阵列不过这个还是看团队约定啦毕竟 HTTP Status Code 到底代表协议本身的状态还是 API 提供服务的状态就有的吵了
作者: yahuichang (小惠)   2022-06-22 21:35:00
唸过厂商HTTP Status Code 404 ,怎么知道是call 错,还真的没资料。
作者: luke72 (ccc)   2022-06-22 21:53:00
REST就只是篇博士论文,学术界嘛,根本没实战验证过发明者拿到学位就走人了,哪管你照着做有多少相容问题
作者: Hsins (翔)   2022-06-22 21:59:00
所以有很多问题啊,拆分粒度不够或太小都不适合,要嘛拿到太多不必要的资料,要嘛需要层层往下才拿到想要的资料,一个是浪费流量资源,一个是频繁访问。所以现在有 GraphQL 嘛
作者: jlhc (H)   2022-06-22 22:18:00
200...
作者: opliya (Marzz)   2022-06-22 22:39:00
Get query 连id 都找不到回404没问题,如果有id 就回个200null data
作者: jackflu (jackflu)   2022-06-22 23:05:00
水,这个问题不错喔,是技术又不会太冷门,想多看点讨论
作者: MoshPit (Vortex)   2022-06-22 23:17:00
当然是200,回传空阵列即可。404是找不到该route的时候才回传
作者: viper9709 (阿达)   2022-06-22 23:20:00
不要用404比较好吧
作者: sakyle (Sakyle)   2022-06-22 23:31:00
有这个路径为什么是404?
作者: kurtsgm   2022-06-22 23:31:00
..........200啦干
作者: sakyle (Sakyle)   2022-06-22 23:32:00
都到仓库翻东西了还跟客人说没有找到这条路?
作者: alan3100 (BOSS)   2022-06-23 00:53:00
刻意把404设计成单独给bad url用不是给有心人猜嘛不然你去参考大厂怎样做 我所知aws azure是回传404url,参数...等等client错误大多是回400+reason
作者: jinmin88 (昼伏夜出)   2022-06-23 01:33:00
资源不存在回404..单纯没body回204
作者: stupid0319 (征女友)   2022-06-23 07:10:00
200
作者: sharek (...)   2022-06-23 07:20:00
既然没有标准,没资料回404也还好吧,文件or讲好就好了404也不一定只能代表路径不存在
作者: DrTech (竹科管理处网军研发人员)   2022-06-23 08:22:00
200。或改用204。看来原文基础没学好。这些 status code是用来判断什么都不太清楚。API存取正常就是要回2xx。RFC2616,明确规范,2xx是成功。4xx,是client error. 。没错误不要用4xx。不懂的去查国际标准怎么写。
作者: willy0206 (不成才小领队)   2022-06-23 11:54:00
作者: ssccg (23)   2022-06-23 15:17:00
其实这篇原PO并没有限定说在问RESTful,所以应该没有哪个比较好,不要混在一起就好
作者: za755188   2022-06-23 17:37:00
这个吵不完啦XDD 不过我认识的前端都希望回200
作者: penril0326   2022-06-23 18:22:00
200啊 404感觉是path错了
作者: bill0205 (善良的小孩没人爱)   2022-06-23 20:41:00
如果本来是预期为清单类型 结果没有资料 那就是200但如果最后是指定资源值 404或是200就比较有争议但假如是类似/api/users/<user> 找不到 丢404好像很合理
作者: jinmin88 (昼伏夜出)   2022-06-24 01:07:00
建议website跟api server分开,不然就真的404会很混乱.
作者: preisner (ppp)   2022-06-24 08:13:00
绝对不是用404, 那是http的error code拿来混用绝对不好
作者: strlen (strlen)   2022-06-24 11:43:00
空资料是空资料 伺服有问题是伺服有问题 这两回事只要API能正常运作 都不应该吐200以外的东西空资料只是目前没有东西 不代表之后也不会有东西API资料状态 那是连线状态确认没问题之后的事资料状态 与 连线状态 是完全不同的东西
作者: hegemon (hegemon)   2022-06-24 11:48:00
楼上你可以用204更精确
作者: Romulus (Säubern Mode)   2022-06-24 16:29:00
可是404和连线状态没有半毛钱关系
作者: askacis (ASKA)   2022-06-25 12:08:00
200,body看资料格式,xml的话就带空元素之类的方式
作者: nayeonmywife (sanamywife)   2022-06-25 13:54:00
基本上200是代表回传成功,至于有没有资料就装在data吧,目前是这样规范
作者: npkalala   2022-06-25 17:39:00
404 Not found不能只看字面意思吧,要了解一下内涵
作者: strlen (strlen)   2022-06-25 22:16:00
楼上是不是以为连线状态指得是你的网络状态?我说的是连到该服务器API的状态好吗?“状态”也不一定只是连不上 还可能有其他种状况
作者: bill0205 (善良的小孩没人爱)   2022-06-26 11:16:00
404不代表不用在body资料吧 默认格式还是要有
作者: honestyer (诚实可靠小郎君)   2022-06-28 14:55:00
用404太怪异了吧..200 回status
作者: noiretblanc (noir et blanc)   2022-06-29 20:21:00
200
作者: jl40 (jl)   2022-06-30 22:20:00
424
作者: shimachokong   2022-07-02 18:34:00
200,没有那个 api才是 404
作者: hannah5269 (哈娜爱哈哈)   2022-07-08 03:13:00
404新理解..

Links booklink

Contact Us: admin [ a t ] ucptt.com