后端不按格式返回数据的问题……

2020-11-15 12:25:54 +08:00
 lwlizhe

刚才有个朋友问我,发生什么事了,

我说怎么回事,给我发了几张截图,我一看,

嗷,原来是刚才,有一个高级后端,将业务数据做为 key 返回给我……

( 咳咳,举个例子:他返回的是直接一个 jsonObject:{"用户名 1":1,"用户名 2":2},我当时还以为是类似于这种:[{"userName":"用户名 1","value":1},{"userName":"用户名 2","value":2}] )

我说可以,我说是不是应该按格式来,这样不好用,

他不服气,我说大佬,你用这种方式返回数据,那怎么转成实体类呢?

我一说他啪就站起来了,很快啊,然后上来就是一句自己解析 json 数据不就行了,

我全部防出去了啊,防出去以后,自然是以商量的语气问下能不能以固定格式的方式,至少能转成实体类,这样大家都舒服,毕竟接口嘛,最好固定格式,这样无论从维护角度还是可用性来说都很不错的

结果他说我是有备而来的,这个只有四年工作经验,还是外包的年轻人不讲武德,来,骗,来,偷袭,他这个高级后端的老同志,这好吗?这不好,他劝我这位年轻人好自为之,好好反思,以后不要再犯这样的错误,小聪明啊,工作要以和为贵,要讲武德,不要搞窝里斗

咳咳,最后当然是以大佬说的为准,毕竟按他的说法

为什么你一定执着于这个非固定 key 这个 jsonobj 和 class 有什么不一样么?

以上纯属根据自身经历而来的逗乐吐槽……如有雷同冒犯,请轻喷~~~~

8145 次点击
所在节点    程序员
89 条回复
baylee12
2020-11-15 14:00:20 +08:00
商量着来呗,你这个数据可能是整个对象的一部分。你只要这两个值,他又不想单独再写个 vo 来存储,那就 json 一把梭咯。小公司就这样咯,我一般前端要什么格式,我就给什么格式。和气生财嘛,毕竟摸鱼才是赚钱,写代码是交易。打工人何必为难打工人
muzuiget
2020-11-15 14:01:58 +08:00
后端那种可以保证用户名不会重复,你那种能够保持顺序,哪种匹配业务就用哪种,哪有什么标准不标准。

这种问题也值得吵,说明历练不够,收到数据自己转换一下就完事了,toMap 还是 toList,一行代码的事。

再说能表示同样信息量的情况下,我站后端,毕竟服务端内存比客户端金贵,再转换一次纯粹多余。
binux
2020-11-15 14:03:47 +08:00
@watzds 如果语义就是用户名为 key 那就没问题。

归根到底这个问题看需求设计,不看你能不能转实体类。
能不能实现是你的问题,不是设计的问题。
HongJay
2020-11-15 14:13:35 +08:00
以后不要犯这种聪明吧
fansangg
2020-11-15 14:13:55 +08:00
我记得在贵站发的第一个帖子就是吐槽后端返回数据格式问题的
https://www.v2ex.com/t/479858
有兴趣可以看看现在的后端有多水
billlee
2020-11-15 14:14:06 +08:00
@lwlizhe #8 你是怎么理解键值对里面的键的?用户名本来就是自然主键,作为键值对里面的键完全没有问题
baylee12
2020-11-15 14:22:15 +08:00
@muzuiget 这个不能这么说,毕竟现在前后端都有水货,我遇到过一个前端,vue 自定义 post 表单都不会,他说他们组内规范只有 get 和 post json,能怎么办,改下方法限制咯。我现在就很佛系了,又不是不能用。省下撕逼的时候,摸摸鱼,逛逛论坛,学点自己感兴趣的东西还是挺香的
baylee12
2020-11-15 14:22:40 +08:00
@baylee12 时间
lwlizhe
2020-11-15 14:22:55 +08:00
@billlee 详见 16L 的那俩链接………………我感觉大家都说的很明确了

简单的来说就是,如果你就给我这个 json,其他什么都不知道

鬼知道那个用户名是啥玩意……

key 要明确含义啊……
lwlizhe
2020-11-15 14:33:43 +08:00
@billlee 对了突然想起来

如果单独只针对键值对,那肯定是没问题的&……

但是我说的语境是 json 中的键值对……

不知道你是不是跟上面一个明确支持把业务数据当 key 值的家伙一样……所以现在回复下,如果你明确表明把业务数据当 key 值的话,当我没回复过……
syozzz
2020-11-15 15:06:12 +08:00
他不讲武德啊
billlee
2020-11-15 15:07:59 +08:00
@lwlizhe #30 大概理解了,List<Mode> 适合 orm 和页面的映射,Map<Key, Model> 适合计算。我这里后端只管复杂业务的计算,简单的 orm 是 node.js 负责的,所以更多使用的是 Map<Key, Model> 方案。
sugars
2020-11-15 15:10:35 +08:00
看到后端问题,我就啪的一下进来了,很快啊
iApp
2020-11-15 15:26:40 +08:00
这个我肯定直接就转了,后台返回啥,前端处理啥,懒得扯蛋,浪费时间,又不是做不了
imdong
2020-11-15 15:33:00 +08:00
我特别好说话,你给啥,我用啥,你要啥,我给啥。

只要你不是一天一个样,怎么开心怎么来。

好说话的咱就商量下,不好说话的咱就当无事发生。
reus
2020-11-15 15:44:15 +08:00
传统开发以点到为止?
Rect
2020-11-15 15:52:53 +08:00
看得脑壳痛 , 楼主能不能好好把一件事情讲清楚
ccppgo
2020-11-15 15:56:04 +08:00
@imdong 老好人了
947211232
2020-11-15 16:25:48 +08:00
jsonObject:{"用户名 1":1,"用户名 2":2},

这种很奇葩,如果是单一地方用,双方约定好就得

如果是全局的话,你还是跟上级反映吧,不利于扩展、维护的
Kirsk
2020-11-15 16:46:52 +08:00
别洗 API 就应该以前端友好第一

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

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

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

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

© 2021 V2EX