强烈吐槽传大段嵌套 JSON 格式请求,各位大神怎么看?

2016-07-20 21:33:23 +08:00
 sunmonster

最近公司开发一个 Web 新项目,就两个开发,一个前端加上我后端 PHP 开发,前端要求前后端分离,我只负责提供 api ,这倒是无所谓,但是他所有的请求都要求是 JSON 格式,我就有点受不了了。我倒是无所谓 JSON 还是 XML ,关键是一大段的 JSON ,嵌套 3 , 4 层,包含各种数组,布尔值发送过来,这叫我后端怎么做验证?我之前是提议直接 K/V 形式, JSON 的话至少不要嵌套这么多,他说数据量太多, JSON 方便,嵌套是为了更好地组织结构,不然干嘛传 JSON 。

卧槽,各位大神怎么看?

15105 次点击
所在节点    程序员
100 条回复
hasbug
2016-07-20 23:09:14 +08:00
目前我们也这么干,我是一个前端,后端更愿意输出 JSON
hasbug
2016-07-20 23:11:56 +08:00
哦,刚细看了下,这个时候我认为应该是后端决定接口的需要数据,尽量从接口设计上去简化。
billlee
2016-07-20 23:17:59 +08:00
@iyaozhen 这还是 php 弱类型的锅啊,你看 python 就不需要 isset. 昨天刚填了一个 json_encode 造成的大坑,多层的 array, 里面的某个 value 编码出错,然后 php 在那个 value 的位置上默默填了 null.

@YuJianrong JSON 是 JavaSecript 原生的,其它语言使用 JSON 可能不如前端方便,所以我觉得如果用了 JSON, 那前端应该要去兼容后端。
cheneydog
2016-07-20 23:18:39 +08:00
我认为这么做是对的, lz 反而错了。
janxin
2016-07-20 23:29:40 +08:00
@YuJianrong 前端要求字段是没问题的,但是设计结构不一定可以,尤其是设计上面提到的数据库结构和事务的时候。
@sunmonster 多次请求未必那么邪恶,看情形而定了
YuJianrong
2016-07-20 23:36:17 +08:00
@billlee 在我看来这和什么格式没关系。 JSON 只是一个大家都方便使用的格式而已(虽然 Javascript 尤其方便),即使是后端,我以前写 python 用 XML 前后通讯,等写完就吐血了,用了 JSON 觉得大家都很开心。

只是 API 的定义应该从前端开始,毕竟和用户接触的是前端,只有前端才能解构用户的需求。后端设计 API 前端使用,做出产品后再想做用户体验优化,那简直就是噩梦(是的,我司就这样)……
YuJianrong
2016-07-20 23:37:27 +08:00
@janxin 所以我提到双方要沟通来调整 API ,从后往前太被动了。
janxin
2016-07-20 23:50:28 +08:00
@YuJianrong 同意
msxcms
2016-07-21 00:01:26 +08:00
应该后端主导开发
xjp
2016-07-21 00:18:37 +08:00
1. 前端定 api 接口没有问题 毕竟最终这些接口是给前端用的 后端是实现这些接口 项目大点 前端需要哪些 api 接口后端都不一定搞得清楚

2. 如果嵌套太多 是数据结构设计的有问题 一般来说 返回值的 json 三四层还是非常常见的

3.1 数据返回值几乎都是 json 格式, restful 风格就是推荐使用 json

3.2 基于 3.1 上传参数的时候 使用 json 代替 formurlencoded 或者 xml 是历史的选择,而且 xml 确实已经差不多快被淘汰了,虽然 formurlencoded 还是大多数,

4. json 比 formurlencoded 简单的键值对更加灵活,对前端开发更加方便
ferock
2016-07-21 00:51:36 +08:00
1. 沟通问题
2. 如果你允许对方主导开发,你又懒得沟通,掉坑实属于活该
3. 不管如何嵌套,数据结构合理性最重要, db 或者 api 都需要合理
4. 明显最重要的和老板沟通,你也不擅长
5. 目测你呆不长,而且走的时候依然觉得问题都是别人造成的
sunmonster
2016-07-21 08:00:38 +08:00
@ferock
@YuJianrong

你说得很对,我也知道很多需要沟通,但是那也要看人,因为他让我觉得我在质疑他的能力。难道你们在项目中前后端都一直沟通得很顺畅?我不想争执是因为我明显感觉到这样既浪费时间,也不会有结果
rubyvector
2016-07-21 08:25:35 +08:00
多重数据有时候难以避免.看你们沟通的方式.至于数据校验,只要沟通清楚,思路清晰,本身是没有影响的.
当然,楼主是个很有责任心的人.要有些完成任务的,才不管数据校验这种苦逼事呢
flydogs
2016-07-21 08:27:05 +08:00
不是后端设计 API 嘛?
shinwood
2016-07-21 08:33:02 +08:00
为什么前端想主导开发?前端兼职产品经理?
ChefIsAwesome
2016-07-21 08:46:43 +08:00
楼主你讲的是现在后端开发避免不了,而且暂时解决不了的问题。
前端( web, 手机客户端)的 view 长成某个样子,要你造个 api 提供满足这个 view 的数据。 view 改了,你是改之前的 api ,还是造个新的 api ?之前的 api 是留着,还是删掉不要呢? web 和手机客户端上的界面差不多,但是需求稍微有点不一样,你是造俩 api ,还是造一个同时满足它们的需求呢?
最后的结果就是一团乱。

https://www.infoq.com/articles/no-more-mvc-frameworks
这文章的前几段就描述了这种情况。
Sharuru
2016-07-21 08:48:45 +08:00
一致性我们是后台存 session 解决的...
xinyewdz
2016-07-21 08:53:07 +08:00
后端定义初步的接口,然后给前端看一遍,看有没有要补充的。然后在开发过程中在沟通,调整细微差别。
ericls
2016-07-21 08:54:18 +08:00
你就当是对接第三代 API 吧 这种嵌套多层的 JSON 很常见
genffy
2016-07-21 08:57:59 +08:00
是个好前端
另,羡慕你们前端不用写 PHP

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

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

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

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

© 2021 V2EX