关于前端传参问题: formData 和 json 两者有什么优劣吗?或者说存在决定性优势

2019-10-14 10:28:30 +08:00
a7217107  a7217107

前两天根据项目后端接参问题跟同事讨论,既有 formData 又有 json,比较混乱。我的观点是 json 对于接复杂对象比较方便,formdata 需要 String 转成对象,同时参考了一些开源项目,请求封装默认的是 json 格式。同事认为,请求方式只是一种跟前端的约定,json 格式 postman 自测太麻烦,绝大多数接口 formData,遇到复杂格式的 json 接参或者 String 转对象。

19479 次点击
所在节点   Java  Java
34 条回复
wisetc
wisetc
2019-10-14 12:51:42 +08:00
不是两种方式都应该同时支持吗,任意调用者用着舒服就用哪种,现在大部分都支持 raw json contentType 吧。
optional
optional
2019-10-14 12:55:23 +08:00
前者可以传文件,后者保持结构和类型
walpurgis
walpurgis
2019-10-14 13:05:01 +08:00
Content-Type 是 json 的时候,cors 会多触发一次预检请求
zhengjian
zhengjian
2019-10-14 13:11:43 +08:00
@walpurgis 你指的是 options 方法吗,应该跟 Content-Type 没关系吧?
lihongjie0209
lihongjie0209
2019-10-14 13:26:25 +08:00
@harde #14 这个问题基本和开发无关, 取决你的用的 mvc 框架是否支持。
jorneyr
jorneyr
2019-10-14 13:46:25 +08:00
FormData 方便 XSS 过滤,但是传复杂对象 (多级属性) 麻烦
JSON 传复杂对象方便,但是 XSS 过滤麻烦
harde
harde
2019-10-14 13:50:57 +08:00
@lihongjie0209 框架不支持就不能自己写了?写个过滤器一劳永逸。
lihongjie0209
lihongjie0209
2019-10-14 14:15:31 +08:00
@harde #27 那么你还需要定义一套 formdata 字段解析的规则 ?

类似于 reqObject[listField][index_1][objectfield] = 1 ?? 这样的?
DOLLOR
DOLLOR
2019-10-14 15:37:20 +08:00
FormData 传简单的 key-value 挺方便的,但是嵌套对象、数组就比较麻烦了。所以要根据你的情况考虑选择。
mmrx
mmrx
2019-10-14 15:41:41 +08:00
有必要统一么,我前后端客户端都写,参数简单就用 FromData,复杂参数就用 Json 格式传参
根据实际情况选用就好了,或者有偏好+自己可以决定用什么格式的话,想用什么格式用什么格式
否则,还是看清接口文档,参数格式到底是啥,反正也没有决定权...
jzmws
jzmws
2019-10-14 16:21:53 +08:00
@harde 这么写的 ? 有例子不 ?
ma836323493
ma836323493
2019-10-14 17:30:42 +08:00
传什么都好,别再给我传 undefined 了,脑壳疼
Takamine
Takamine
2019-10-15 00:05:05 +08:00
还是除了文件上传之外统一 json 吧。
SkyLine7
SkyLine7
2019-10-15 11:05:43 +08:00
文件上传,formData,其他一律 json 或者 urlencoding

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

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

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

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

© 2021 V2EX