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

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

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

19297 次点击
所在节点    Java
34 条回复
murmur
2019-10-14 10:30:10 +08:00
json 格式 postman 怎么麻烦了,直接写到 body 里,加个 type 头就完了
a62527776a
2019-10-14 10:30:25 +08:00
我们公司后端也是一会儿一种 烦死了
wunonglin
2019-10-14 10:33:06 +08:00
前端完全抛弃 formData 是可行的,只不过大多数后端框架自带了 formData 解析相对方便而已,其实是有 json 的传入参数校验之类的,class-validator 就是,只不过他们懒得。。。
liuhuansir
2019-10-14 10:34:14 +08:00
感觉两者区别不大,只要统一成一种就行,两种混搭最烦
droiz
2019-10-14 10:35:25 +08:00
不涉及上传文件那随便,上传文件还是得 formData
arrow8899
2019-10-14 10:40:54 +08:00
form-data 和 json 在表示同样的信息时,form-data 数据量会小一点(a=1&b=2) 7Byte,但是 json 可读性更好({"a":1,"b":2}) 13Byte。除此之外,区别不大,只要前后端约定好就行。
userdhf
2019-10-14 10:52:37 +08:00
post 只能用 formdata 吗?
zivyou
2019-10-14 10:55:42 +08:00
上传文件只能用 form-data
Vegetable
2019-10-14 10:57:14 +08:00
主要是 form 传递二进制比较方便,不然可以完全舍弃。json 上传文件不是很合适。
hmxxmh
2019-10-14 10:59:34 +08:00
@murmur 哈哈,可能他没试过
Sapp
2019-10-14 11:01:33 +08:00
现在不是只有上传文件才用 form-data 吗?
Kusoku
2019-10-14 11:04:29 +08:00
postman 自测真的不麻烦啊
Chingim
2019-10-14 11:11:48 +08:00
用 json, 便于调试 /抓包 /debug
harde
2019-10-14 11:19:19 +08:00
后端偷懒了,我设计接口都是兼容 formData 与 json 的。
barbery
2019-10-14 11:24:41 +08:00
formData 只能是传递 string 格式的参数,类似 go 这类的静态语言,如果传 json 的话可以省下不少类型转换的麻烦
maemual
2019-10-14 11:28:02 +08:00
差别不大,统一成一种就行。。。
KuroNekoFan
2019-10-14 11:51:53 +08:00
你指的 formdata,是 application/x-www-form-urlencoded 吧
Krime
2019-10-14 12:02:44 +08:00
formData 传数组和多维数据的时候比较捉急,但是更适合上传文件
ijse
2019-10-14 12:05:13 +08:00
formdata 对数组的编码方式还有很多种方式,常常会因为不统一引起麻烦,不如 json 更标准
ipwx
2019-10-14 12:07:51 +08:00
对象一复杂,formdata 你就哭吧

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

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

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

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

© 2021 V2EX