前端请教 后端返回数据格式问题

149 天前
 HeroYang811
本人:前端
对方:后端(外包)
情况:电商项目首页商品列表
问题 1:在多维数组内某些字段含有多个数据的情况下,后端返回的数据格式为字符串,多个则用逗号隔开比如"http://123,http://456,http://789",然后让我前端去做逻辑处理,也就是说让我将字符串转换为数组再处理。
问题 2:部分类型判断采用中文,比如某个商品类型,name === '类型一号' ,然后根据这个相等的类型去展示对应的内容。
我的前端理解:这也太不规范了吧,很多地方逻辑数据处理全部扔到了前端,而且是在商品首页数据量这么大的地方,难道不会导致页面渲染缓慢吗,并且说:“客户端处理逻辑是用户体验感最好的表现”,偷懒也不能这样吧
结果:浪费时间,我懒得扯了,前端写就写吧

虚心请教,各位后端大牛的看法,
5669 次点击
所在节点    程序员
72 条回复
wu67
149 天前
第一个问题, 其实谁干都行, 典型的用 mysql 存字符串, 只是他懒得分割而已 (换 pg 存数组就简单粗暴了, pg 大法好). 前端分割其实没太大问题, 累点而已, 你的商城是小程序那就另说, 那玩意的性能和屎一样.

第二个问题, 一言难尽, 很多老旧系统都有, php 的各种商城就是重灾区, 大概是从他的旧代码库里面 c v 了...
xuelu520
149 天前
部分简单的拆装拼接逻辑给前端,可以降低后端压力。(前端性能都这么强了,这点不算啥)
一般列表都是分页来的,如果数据量大,应该要考虑需求是不是有问题。
总之看你们有没接口规范,没有就怎么合作舒服怎么来
cat
149 天前
特别讨厌用逗号 , 来隔开的,一旦值本身包含逗号,一分割就乱了
gxy2825
149 天前
你们公司前端也太好说话了吧,换我们给前端这样的数据早就炸了
op 或许可以问问前端/后端组长的意见?或者其他老员工
awalkingman
149 天前
@cat 我是特别害怕
gitrebase
149 天前
问题 1:就像 #1 说的,很有可能是在存“一对多”的数据的时候不想新建一张表,按我的习惯我是会在后端把数据转为数组再传递给前端的

问题 2:用中文 emm 我也不知道行不行,但是用 code 会更好吧
brader
149 天前
还算正常,我理解是都可以。
还有你说性能的问题,其实影响不大,如果你非要比较个高低,我觉得放服务端转化影响大,因为服务端要面对所有客户端。
Bingchunmoli
149 天前
@brader 赞同,1. 是需不需要单独处理,前后端都能做的事 看分工,2. 一般用 int , 不排除一些政企或者老系统喜欢中文需要兼容或者什么的, 数据的一些逻辑处理是可以后端和可以前端的,从性能考虑 优先前端,前端性能“无限”, 还有一种考虑是 后端一个接口支持多端,不同端对应自己业务自己处理, 如果单端,服务器并发不高,前后端都行
James2099
148 天前
我也遇到过,筛选 list 列表都让我自己前端写死,还有分页前端来做,还有返回的数据格式,也要我分割,明明穿一个对象就能解决
1016
148 天前
你这算啥... 我这边后端返回的数据像 tmd 一坨屎... 明明他自己能处理的数据 非要丢给我来处理 自己坐在那里玩手机 刷推特 我真的 C™D

主要他也玩 v2 也不好把数据粘贴出来。
k9982874
148 天前
这。。外包你不干他,留着他过年?
wdf
148 天前
那你是没遇到我们的后端,前端用的级联组件,按道理后端返回正常的树结构就没啥问题,结果他返回的数据每层的数据格式不一样,层级也不确定 说最多 5 层,最多返回 5 千多条数据,沟通让改下数据格式,后端回怼句:我返回的数据格式是有意义的,我修改的话不太好。我现在有点质疑自己 不知道问题出在哪了
sanmaozhao
148 天前
1 、既然是多值,那就以数组返回
这个没什么好商量的,后端你爱咋存咋存,不要暴漏给前端。更别说值里面有逗号咋办的事儿了

2 、逻辑判断用中文不太好,或者说不要用“会显示到界面上的值”
因为会显示出来的,后续很大可能就要修改,文案啥的谁都没法保证不变
如果这个中文永远不显示给用户,那就还行吧,你就当它是个 key 好了
nothingistrue
148 天前
如果单纯从技术层面讲:
问题 1 ,前后端谁做都可以,后端的视图层,前端的 Model 层都是干这事的,至于具体谁做,首先要看以前谁做,其次要看现在谁愿意做,最后才是看谁有时间做。
问题 2 ,不与代码同步的文档不如没有文档,没有管理的编码不如直接用名称。尤其是经过大数据分析的发展之后,那种没用的编码,还是让他步入坟墓吧。

实际上你不要扣技术,没意义。
davin
148 天前
感觉第二个问题可以用 enum 枚举映射, 用的时候,name === ItemTypes.Category1 这样判断。之后维护这个 ItemTypes 就好,减少传说中的魔法值。其他比如订单状态,衣服的尺码 (M 、L 、XL 、XXL 、XXXL 等),订单审核状态也适合用枚举。
MoYi123
148 天前
喷点只有
1. 不规范
2. 逗号不在 url 转义的表里, 一定要这样搞用个分号, 保证不切错(包括后端的存储)

硬要说性能, 我猜这样 split 性能会比解 json 更好.
MorJS
148 天前
上嘴脸
FawkesV
148 天前
问题 1 偷懒了. 也确实很丑.
问题 2 看业务场景,有没有 code 实在没办法只能这样子处理了
coderzhangsan
148 天前
1 谁做都行,只是看谁懒得强势些,你来提问,就应说明问题了;至于性能,你说得太夸张,你一页要显示多少商品数据?几百条以下,字符串转换为数组能耗损什么性能。
2 用中文可能是前期设计遗留的问题,加状态枚举估计要改造库表,能跑就行,不必过多关注,真有问题,推给后端就好了。

总结:
1 你有代码洁癖
2 贵司后端比较强势
3 后端外包,你们的项目估计也好不到哪去,所以程序和程序员只要有一个能跑就行
fkdog
148 天前
后端水平太次了,英文半角逗号是 url 无需转义的字符,但凡哪天 url 需要存一个云厂商处理过的带参数图片、视频(往往 url 里带半角逗号的),就会出问题。

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

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

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

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

© 2021 V2EX