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

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

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

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

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