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

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

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

卧槽,各位大神怎么看?

15087 次点击
所在节点    程序员
100 条回复
qiayue
2016-07-20 21:37:32 +08:00
哇擦, PHP 处理 json 不是最方便的嘛
字符串 json_decode 成数组或对象,如果这一步都转不了直接返回错误信息即可
然后分层验证,从外到里
czheo
2016-07-20 21:38:28 +08:00
前后分离当然用 json ,嵌套太多是 schema 没设计好,不管 json 的事。
airyland
2016-07-20 21:40:48 +08:00
如果请求数据需要嵌套 3 , 4 层,感觉设计有点问题吧。
一般都按照后端数据结构来,如果后端结构没这么复杂,那么这显然就是有问题的。

事实上对楼主公司的协作流程表示不理解啊,后端设定接口啊,写好文档给前端就行了,为什么是前端来设计传值格式啊?
Mirana
2016-07-20 21:55:26 +08:00
按照业务实体写接口,别把所有的东西都塞到一个接口里去了
limengwei
2016-07-20 22:03:47 +08:00
图样
Pastsong
2016-07-20 22:04:12 +08:00
json_decode json_encode 不要太方便
smithtel
2016-07-20 22:05:34 +08:00
楼主是怎么处理多级菜单的?这种难道不好处理吗,而且,验证这种事情,主要还是交给前端。后端验证的数据,要求前端放在第一层就好。
ck65
2016-07-20 22:06:28 +08:00
看主题的描述有种这个 JSON 体积足足有 1MB 的既视感。
ByZHkc3
2016-07-20 22:10:43 +08:00
前端设计接口?楼主你疯了吧
orvice
2016-07-20 22:10:58 +08:00
RESTful 一般传输格式就是一个 json 串....

这很清真...
yangtukun1412
2016-07-20 22:12:15 +08:00
@smithtel 靠前端验证数据,你在开玩笑吗…
YuJianrong
2016-07-20 22:24:36 +08:00
前端设计接口有什么不对?后端在比前端功能更丰富的语言和调试环境下居然连前端需求都不能满足,那才真是醉了。

当然由于业务复杂所以某些场景需要接口沟通和调整也是需要的。

不过我话就放这了,后端设计接口前端用的公司都是渣(是的,包括我司)。要想做到一流用户体验的互联网产品,不改变思想可是绝对不行的。
cevincheung
2016-07-20 22:25:12 +08:00
```
if (!$this->_validate(Request::all()))
return [
'error' => 'fuck'
];
```
smithtel
2016-07-20 22:25:36 +08:00
@YuJianrong 我指的验证是 ajax 方式。
learnshare
2016-07-20 22:28:30 +08:00
正常来说,前端 /客户端发送到服务器的 JSON 一两层就可以了。一般是:

key: value
key: [{
key: value
}]

第二种都不是很常用了吧。
sunmonster
2016-07-20 22:33:13 +08:00
@airyland
@orvice
@ck65
@Pastsong
@ByZHkc3


因为他觉得我设计得不好,我只是不想跟他争论而已
并不是 json 解析问题,因为数据太多,需要插入很多表,如何保证数据一致性?都放在一个事务里?我也说本身 api 设计就有问题,但是前端他想要主导开发,而且比我要受到老板信任,项目赶得紧,我没有时间也不想跟他去争论,感觉就是掉坑里了
iyaozhen
2016-07-20 22:44:59 +08:00
楼主吐完槽怎么就不见人了。

猜测是楼主需要校验各个数值的正确性。
虽然 json 可以转成数组但在获取数据时需要大量的 isset 判断值是否存在,然后还要判断值是否符合要求。之前也遇到过这种问题,可以封装一个数组获取值的方法,需要用到值的地方再获取值做校验。
iyaozhen
2016-07-20 22:48:49 +08:00
@sunmonster -_-|| 楼主居然出现了。那你这种情况基本上是沟通问题了。😂
tinyproxy
2016-07-20 22:55:23 +08:00
@sunmonster 不了解你的业务,但真的有那么多东西需要用事务来保证数据一致性么。。。
sunmonster
2016-07-20 22:57:12 +08:00
@tinyproxy 确实是需要的

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

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

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

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

© 2021 V2EX