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

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 有什么不一样么?

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

8467 次点击
所在节点    程序员
89 条回复
Exceptionluo
2020-11-16 09:14:02 +08:00
“我一说他啪就站起来了,很快啊,然后上来就是”😂😂😂
szuwl
2020-11-16 09:18:24 +08:00
不会吧,都 0202 年了,还有人后端用 jsonobject 作为返回值对象吗
oldbaby
2020-11-16 09:19:58 +08:00
这其实不算不按格式来给数据,真正恶心的是,给的数据不在同一个接口里,前端为了完整的数据,需要同时请求 N 个接口,然后还要 Promise.all 的成功回调才能拼接到完整的数据,后端拿钱不干活,多写一个接口都觉得累,只考虑服务器,不考虑客户端网络请求并行数量,失败率等问题
NjcyNzMzNDQ3
2020-11-16 09:20:30 +08:00
来了来了,又一个语言黑。#52
wangritian
2020-11-16 09:25:32 +08:00
必须用 array,map 会导致某些语言乱序,比如 go
danyi
2020-11-16 09:37:28 +08:00
大 E 了啊
pph7y
2020-11-16 09:45:36 +08:00
这种还不如直接返回字符串用分割符号分开
clf
2020-11-16 09:54:20 +08:00
array 和 map 返回的最大问题还是在一个 key 的可重复性(不过很少会遇到)和顺序上。如果后端没用有序的 map,则会造成前端乱序。
withoutconscious
2020-11-16 09:57:37 +08:00
婷婷呢
myCupOfTea
2020-11-16 10:02:21 +08:00
@redtea 是的,顺序不可控,这么干挺那啥的
qumingkunnan
2020-11-16 10:12:16 +08:00
格式?谁定的?如果没有定规范就不能说他不按格式来了,定了规范就直接打回去不接收
bonfy
2020-11-16 10:17:57 +08:00
其实就是文档嘛,当时接口定义返回这种格式,那人家没错

如果没文档,那你们继续吵吧,反正模糊地带,解决不了就上升
PEAL
2020-11-16 10:50:04 +08:00
这样子写损失了顺序,而且有重复的风险
rodrick
2020-11-16 11:02:05 +08:00
老马保国了,首先有咩有没文档,没有的话都是扯皮,其次这种写法确实操蛋,{name:"xiaoming",age:18}这种写法不是学前后端交互第一节课就该知道的么,但是这人不讲理的话那也没辙,很多事不是技术层面的问题,是人的问题
yujieyu7
2020-11-16 11:02:38 +08:00
你的方案更好点,前端也更方便使用。不过,这格式转换前端和后端都是一个 function 解决的事,他听就听,不听就拉倒。出来挣钱嘛,开心最重要,有这撕逼的时间,改都改好了。
THESDZ
2020-11-16 11:12:54 +08:00
@yujieyu7 #75 问题在于,大家都是红灯停,绿灯行,你整个绿灯停,红灯行,是没问题,但是不难受吗?
darknoll
2020-11-16 11:52:26 +08:00
我遇到这种情况我就会去直接改他的代码,然后久而久之他的代码他可能自己就看不太懂了,就很可能来骂我,然后我就会去揍他
ElmerZhang
2020-11-16 12:07:54 +08:00
@kltt22 @danielzh 作为一名写过 10 几年 PHP 的老程序员,我可以证明确实很多用 PHP 的喜欢这样写。
而且 PHP 还有个函数可以非常方便的把 List 转为这种 Map : array_column
用法见官方文档 Example 2: https://www.php.net/manual/en/function.array-column.php#example-5378
goldenCold
2020-11-16 12:12:10 +08:00
可以说这样你不方便然后让他最好转一下。 没有规范的情况下确实怎么返回都行,没写过前端的后端有时候是会返回一些奇奇怪怪的格式
coloz
2020-11-16 12:36:04 +08:00
我遇到更奇葩的是,同一个项目,有些接口是 list 返回,有些是对象返回,项目的管理让几个开发人员自己定,然后大家各写各的风格。

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

https://tanronggui.xyz/t/725418

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

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

© 2021 V2EX