非技术性问题,想询问一下关于接口数据类型null大家的项目里是前端还是后端处理的呢?

先说说我的项目,主要是一个管理端平台,有很多统计表格页。
简单举一个例子,比如表格中有一项数据列content,后端提供的文档类型是String
同时有一个需求,表格里content长度限制20字符,超出部分截断加'...',鼠标悬浮用弹出框显示全文。
本来用 v-if='content.length > 20'/v-else 是可以解决的
但是如果content数据为空,后台会返回null,那么content.length就会报错导致页面无法渲染。
类似的还有列表,空列表有时候也会返回null(有时候是[]),每次对接接口为了防止意外都得加
list = res.result.list || []
按我的想法来说,这个类型应该是后端约束吧,如果字段是String类型,为空就应该返回''而不是null
但是考虑到实际情况,我们项目前端的部分大概占三成,后端和前端接口对接大概占三成,然后项目还有后台逻辑,后端要接第三方API以及数据迁移,这部分大概占4成。虽然后端人数多一些,但是人均工作量前端还是会低一些,测试有时候遇到这种问题都是会提给前端(数据项太多了,一次比较难考虑周全),我看到一般就顺手改了。
本来我是没啥疑问的,我想的是理论归理论,实际情况归实际情况,反正这点小问题前后端都能处理,谁方便谁来就好了。
但是今天摸鱼逛知乎,看到了一个类似的问题,发现在下面意外地吵得比较凶。
考虑到这个论坛毕竟还是程序员为主,想问问大家对这种数据类型异常的问题是怎么看的呢

阅读 2.4k
5 个回答

团队目前是:

  • 对象返回{}
  • 数组返回 []
  • 字符串返回 ''
  • 数字返回''
  • JSON字符串返回'{}'和'[]'
    以前都是null, 生产报错就说是后端返回问题, 后来在调试的时候都让他们尽量这样返回了
    其实和自己团队的后端或者leader有关, 最好制定开发规范

看情况,最好就是前后端都处理,一些不确定返回值是否可靠的可以用 可选链 的方式点出来,比如说: content?.length 如果 cententnull 就会直接短路掉。

var content = null
console.log(content?.length > 20)
// log false

json官网
null是json value的一种值
所以从语法上来说,后端返回null是没有问题的

从性能角度说,后端虽然也可以处理,但是完全可以节省这部分服务器性能出来,让客户端自己处理

前后端最好都要进行空值处理,拒绝扯皮

请求和页面渲染最好分开来处理,我们团队用一个文件目录处理网络请求,那里出来的数据是页面渲染的数据格式,像默认值这种处理,都是在那里做的,也就是说页面不需要关心数据格式是否正确

数据提前处理,就会逼迫你去思考页面中需要什么样的数据格式,从源头解决问题,这种数据格式的处理就不会散落在页面的各个地方

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题