关于今天给前端返回数据的结构的争论

3 天前
 imba97

今天发生一个离谱的问题

我是个前端开发,有一个列表接口,本来有数据,后面突然列表没了,前端逻辑没动过

我看了看接口,发现接口正常,里面列表数据都在,在控制台打印数据也都正常

最后打印列表字段 rows 发现是 undefined,这才发现列表数据的 key 变成了 data

争论开始了

后端反馈是有两种数据结构,一种是有分页一种是无分页

有分页的接口返回 rows,无分页的接口返回 data

后面甚至提出前端在响应拦截器判断一下,有 rows 的话拿 rows,没有的话拿 data

我觉得很离谱,在我的认知中,我认为后端返回的数据要保持一致性

类似这样

interface ResponseData {
    code: number
    data: Array | Object // 这里就大概表示一下可以是列表数组可以是对象
    total?: number // 需要的话返回
    message: string
}

争论半天后端大概意思是:“一般都是这样的,分页和其他查询结果有差异”、“没有必要改 不然看不出来 分页和部分也的区别了”、“你现在没数据了你能第一时间知道是接口改成不分页的了”、“这个框架都几十年了一直都是这样” ...

最后虽然也改成统一的了

但我我对这套说辞是:???

想请教一下大家,你们对接的数据结构也是不统一的吗?哪种方式更好呢?

4673 次点击
所在节点    程序员
101 条回复
lucasj
3 天前
有分页 GET /users/page 和无分页 GET /users 各一个接口不就行了吗
vampuke
3 天前
懒得争论 直接 rows || data
ltaoo1o
3 天前
意思是,同一个接口,从有分页改成无分页,并且数据结构变了,还没有通知你,如果是这样,那肯定是后端的问题。

如果是两个列表接口,分别用于有分页和无分页,那这个正常。

我感觉你说的是情况一,后端的锅。
pike0002
3 天前
这个没有统一规范,根据具体需求来说。本身这个规范也是由前端后端协商好的,不是由任意一方认为应该怎么就怎样的。所以提前协商好就行。
但是根据描述,这里的问题应该是出现在之前工作,然后现在不工作了?这个按你描述后端也没动?框架几十年了都一样。所以这里应该还是有一方动了??
kakki
3 天前
就算判断一般也不用 key 来判断
要么就分接口
要么就请求的时候通过查询参数是否请求分页
要么就一律统一返回一个格式,limit 设置个特殊标记表示无限比如 -1
不过嘛...最终还是看你们自己的约定来处理
imba97
3 天前
@lucasj 接口不是同一个接口,但返回数据的格式不一样,有的是 rows 有的是 data
imba97
3 天前
@vampuke 这不奇怪吗,万一需要用 data 的时候,rows 也错误的返回不一样的数据了咋办
imba97
3 天前
@ltaoo1o 是的,可能也是误操作改了啥,这个不清楚。但前端排错很麻烦,因为第一时间根本意识不到是 key 变了,看到有数据就检查一下一环了,后面的排错纯粹是浪费时间
imba97
3 天前
@pike0002 确实没有统一的规范,但有些接口是 rows ,有些接口是 data ,甚至要前端做兜底判断,给我的感觉还是比较怪的
不是之前的工作,就是刚才发生的,兼职工作
imba97
3 天前
@pike0002 说框架几十年是说的这个框架都开发出来几十年了,都这么用的,不是公司用了这个框架几十年了
imba97
3 天前
@kakki 接口是不同的,主要想讨论后端最终返回给前端的数据结构,是不是需要保持一致。不然就会出现这种,后端可能误操作改了啥,前端做无效劳动
importmeta
3 天前
无所谓, 心情最重要.
imba97
3 天前
@importmeta 确实
lucasj
3 天前
结论:有分页和无分页本质上是不同的接口,所以数据格式不需要保持统一。统不统一都可以。后端给什么用什么。或者按接口文档上写。
感觉 OP 像是新手。其实不用纠结这些细节,能跑就行。项目代码早晚都是屎山。理解屎山,超越屎山。
IvanLi127
3 天前
很离谱,这后端平常靠空指针异常来判断上游是否迭代?
donaldturinglee
3 天前
我记得我做的时候无分页和有分页也是两个接口, 我会在文档上写清楚返回的数据结构该是什么样的, 以文档为准
imba97
3 天前
@lucasj 笑死,早晚都是屎山确实不假。我自己的项目我是尽量避免写成屎山,公司项目就没办法了。我之前其实接受了,但今天排这个错排的心累,做了一些无用功。新手也确实是新手,感觉学不完
imba97
3 天前
@donaldturinglee 但你架不住像我这种,后端可能误操作改了啥,然后前端疯狂排错,最后发现 key 变了,排错排了个寂寞的情况
donaldturinglee
3 天前
@imba97 没有文档的前端兼职做起来是这样的, 全靠猜
imba97
3 天前
@donaldturinglee 文档是有的,虽然更新不及时

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1102528

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX