前端向后台查询数据,如果无数据则会出现404错误,请问这样处理正确吗?

王桑的一天 2016-08-10 10:31:11
前端向后台查询数据,
会在URL中加条件查询,如果无数据,在console中则会返回404错误,

做后台的同事说就是这样的,要我加异常处理,但我觉得这种错误显示在console是不是不太好看?

如果无数据,返回给我个空 list,或空 对象,是不是更好?

请问你们怎么处理的?
...全文
1746 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡泡鱼_ 2016-08-10
  • 打赏
  • 举报
回复
无数据返回404,这个貌似有点奇葩了……无数据就返回一个特定的呀{'nodata':'!0'}或者类似于:{"data":[]},你前端通过data数组的长度去判断也是可以的 至于你说的第二个问题。分流或者负载均衡都是可以的。如何访问你前端可以将接口的调用写个统一的方法,将另一台少点的接口名称列出来,然后做不同的处理就是了
jio可 2016-08-10
  • 打赏
  • 举报
回复
没数据为什么是404,状态码应该是200.后台再给一个统一的提示格式不就可以吗? ps: {message:"response success",success:true,data:[{"xxx":0,"xxxx":2}]} {message:"response error",success:false} {message:"no data",success:true,data:[]}
Go 旅城通票 2016-08-10
  • 打赏
  • 举报
回复
引用 2 楼 wn0112 的回复:
[quote=引用 1 楼 showbo 的回复:] 改下代码,非200不做任何处理就行了。不过返回404也有点颠...
还有一件事,我们后台服务器负载大了,于是加了一台服务器,把一部分接口放到了这台新服务器。 但是让前端加代码来区分哪些接口该访问哪个服务器,这是不是不太科学? 我觉得应该前端始终访问一个主服务器,主服务器自己区分哪些接口访问要丢到另一台服务器,是不是应该这样?[/quote] 通过不同端口来区分标准浏览器下也算跨域,涉及到跨域前端就比较麻烦了。不过你自己的程序,可以改为jsonp来获取数据 分开或者负载均衡来做都可以,分开主要是涉及跨域,数据类型要改为jsonp,但是好处是可以提供并发,因为同一个域名并发请求有限制。前端优化里面有提到
王桑的一天 2016-08-10
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
改下代码,非200不做任何处理就行了。不过返回404也有点颠...
还有一件事,我们后台服务器负载大了,于是加了一台服务器,把一部分接口放到了这台新服务器。 但是让前端加代码来区分哪些接口该访问哪个服务器,这是不是不太科学? 我觉得应该前端始终访问一个主服务器,主服务器自己区分哪些接口访问要丢到另一台服务器,是不是应该这样?
Go 旅城通票 2016-08-10
  • 打赏
  • 举报
回复
改下代码,非200不做任何处理就行了。不过返回404也有点颠...
泡泡鱼_ 2016-08-10
  • 打赏
  • 举报
回复
引用 11 楼 bigbird_561 的回复:
这个后端写的很渣啊,虽然这样写逻辑上没错误,无数据怎么能返回404,约定优于配置,这种东西一般给状态好一点
要么是相当渣,要么就是在“装13”。而且这种返回没有任何逻辑性可言,百分之一万就是错的
泡泡鱼_ 2016-08-10
  • 打赏
  • 举报
回复
引用 6 楼 wn0112 的回复:
[quote=引用 5 楼 crying_boy 的回复:] 无数据返回404,这个貌似有点奇葩了……无数据就返回一个特定的呀{'nodata':'!0'}或者类似于:{"data":[]},你前端通过data数组的长度去判断也是可以的 至于你说的第二个问题。分流或者负载均衡都是可以的。如何访问你前端可以将接口的调用写个统一的方法,将另一台少点的接口名称列出来,然后做不同的处理就是了
你意思还是应该前端区分接口访问地址,而不是服务端统一管理、发请求是吗?[/quote] 按你们目前的配置,是的!因为你们已经是做了基于硬件的分流了,那从开发来说,这部份就应该是前端来完成的了。后端开发人员只要提供对应的接口调用技术文档即可
bigbird_561 2016-08-10
  • 打赏
  • 举报
回复
这个后端写的很渣啊,虽然这样写逻辑上没错误,无数据怎么能返回404,约定优于配置,这种东西一般给状态好一点
王桑的一天 2016-08-10
  • 打赏
  • 举报
回复
引用 8 楼 q646926099 的回复:
404不是页面没找到嘛。 没数据就返回给空数据就行了啊。~
不是页面上显示404,页面没反映,浏览器的console中显示错误 404 (Not found) http://xxxxx
KK3K2005 2016-08-10
  • 打赏
  • 举报
回复
引用 楼主 wn0112 的回复:
前端向后台查询数据, 会在URL中加条件查询,如果无数据,在console中则会返回404错误, 做后台的同事说就是这样的,要我加异常处理,但我觉得这种错误显示在console是不是不太好看? 如果无数据,返回给我个空 list,或空 对象,是不是更好? 请问你们怎么处理的?
我只能说又是**后台 道理不说了 你就问他 如果 他现在 和数据库打交道 查询一条语句 如果发现 没有找到数据 返回一个异常 他接受吗 是应该返回一个 空集合 还是 返回异常? 问相信 如果数据库 返回一个异常 他肯定会说数据库 开发人员 是2b 哈哈
xiaoqiu_net 2016-08-10
  • 打赏
  • 举报
回复
404不是页面没找到嘛。 没数据就返回给空数据就行了啊。~
王桑的一天 2016-08-10
  • 打赏
  • 举报
回复
[quote=引用 6 楼 wn0112 的回复:] [quote=引用 5 楼 crying_boy 的回复:] 无数据返回404,这个貌似有点奇葩了……无数据就返回一个特定的呀{'nodata':'!0'}或者类似于:{"data":[]},你前端通过data数组的长度去判断也是可以的 至于你说的第二个问题。分流或者负载均衡都是可以的。如何访问你前端可以将接口的调用写个统一的方法,将另一台少点的接口名称列出来,然后做不同的处理就是了 你意思还是应该前端区分接口访问地址,而不是服务端统一管理、转发请求是吗?
王桑的一天 2016-08-10
  • 打赏
  • 举报
回复
引用 5 楼 crying_boy 的回复:
无数据返回404,这个貌似有点奇葩了……无数据就返回一个特定的呀{'nodata':'!0'}或者类似于:{"data":[]},你前端通过data数组的长度去判断也是可以的 至于你说的第二个问题。分流或者负载均衡都是可以的。如何访问你前端可以将接口的调用写个统一的方法,将另一台少点的接口名称列出来,然后做不同的处理就是了
你意思还是应该前端区分接口访问地址,而不是服务端统一管理、发请求是吗?

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧