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

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

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

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