前两天根据项目后端接参问题跟同事讨论,既有 formData 又有 json,比较混乱。我的观点是 json 对于接复杂对象比较方便,formdata 需要 String 转成对象,同时参考了一些开源项目,请求封装默认的是 json 格式。同事认为,请求方式只是一种跟前端的约定,json 格式 postman 自测太麻烦,绝大多数接口 formData,遇到复杂格式的 json 接参或者 String 转对象。
1
murmur 2019-10-14 10:30:10 +08:00 1
json 格式 postman 怎么麻烦了,直接写到 body 里,加个 type 头就完了
|
2
a62527776a 2019-10-14 10:30:25 +08:00
我们公司后端也是一会儿一种 烦死了
|
3
wunonglin 2019-10-14 10:33:06 +08:00
前端完全抛弃 formData 是可行的,只不过大多数后端框架自带了 formData 解析相对方便而已,其实是有 json 的传入参数校验之类的,class-validator 就是,只不过他们懒得。。。
|
4
liuhuansir 2019-10-14 10:34:14 +08:00
感觉两者区别不大,只要统一成一种就行,两种混搭最烦
|
5
droiz 2019-10-14 10:35:25 +08:00 via iPhone
不涉及上传文件那随便,上传文件还是得 formData
|
6
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。除此之外,区别不大,只要前后端约定好就行。
|
7
userdhf 2019-10-14 10:52:37 +08:00
post 只能用 formdata 吗?
|
8
zivyou 2019-10-14 10:55:42 +08:00
上传文件只能用 form-data
|
9
Vegetable 2019-10-14 10:57:14 +08:00
主要是 form 传递二进制比较方便,不然可以完全舍弃。json 上传文件不是很合适。
|
11
Sapp 2019-10-14 11:01:33 +08:00
现在不是只有上传文件才用 form-data 吗?
|
12
Kusoku 2019-10-14 11:04:29 +08:00
postman 自测真的不麻烦啊
|
13
Chingim 2019-10-14 11:11:48 +08:00
用 json, 便于调试 /抓包 /debug
|
14
harde 2019-10-14 11:19:19 +08:00
后端偷懒了,我设计接口都是兼容 formData 与 json 的。
|
15
barbery 2019-10-14 11:24:41 +08:00
formData 只能是传递 string 格式的参数,类似 go 这类的静态语言,如果传 json 的话可以省下不少类型转换的麻烦
|
16
maemual 2019-10-14 11:28:02 +08:00
差别不大,统一成一种就行。。。
|
17
KuroNekoFan 2019-10-14 11:51:53 +08:00
你指的 formdata,是 application/x-www-form-urlencoded 吧
|
18
Krime 2019-10-14 12:02:44 +08:00
formData 传数组和多维数据的时候比较捉急,但是更适合上传文件
|
19
ijse 2019-10-14 12:05:13 +08:00
formdata 对数组的编码方式还有很多种方式,常常会因为不统一引起麻烦,不如 json 更标准
|
20
ipwx 2019-10-14 12:07:51 +08:00 via Android
对象一复杂,formdata 你就哭吧
|
21
wisetc 2019-10-14 12:51:42 +08:00 via iPhone
不是两种方式都应该同时支持吗,任意调用者用着舒服就用哪种,现在大部分都支持 raw json contentType 吧。
|
22
optional 2019-10-14 12:55:23 +08:00 via iPhone
前者可以传文件,后者保持结构和类型
|
23
walpurgis 2019-10-14 13:05:01 +08:00
Content-Type 是 json 的时候,cors 会多触发一次预检请求
|
25
lihongjie0209 2019-10-14 13:26:25 +08:00
@harde #14 这个问题基本和开发无关, 取决你的用的 mvc 框架是否支持。
|
26
jorneyr 2019-10-14 13:46:25 +08:00
FormData 方便 XSS 过滤,但是传复杂对象 (多级属性) 麻烦
JSON 传复杂对象方便,但是 XSS 过滤麻烦 |
27
harde 2019-10-14 13:50:57 +08:00
@lihongjie0209 框架不支持就不能自己写了?写个过滤器一劳永逸。
|
28
lihongjie0209 2019-10-14 14:15:31 +08:00
|
29
DOLLOR 2019-10-14 15:37:20 +08:00 via Android
FormData 传简单的 key-value 挺方便的,但是嵌套对象、数组就比较麻烦了。所以要根据你的情况考虑选择。
|
30
mmrx 2019-10-14 15:41:41 +08:00 1
有必要统一么,我前后端客户端都写,参数简单就用 FromData,复杂参数就用 Json 格式传参
根据实际情况选用就好了,或者有偏好+自己可以决定用什么格式的话,想用什么格式用什么格式 否则,还是看清接口文档,参数格式到底是啥,反正也没有决定权... |
32
ma836323493 2019-10-14 17:30:42 +08:00 via Android 2
传什么都好,别再给我传 undefined 了,脑壳疼
|
33
Takamine 2019-10-15 00:05:05 +08:00 via Android
还是除了文件上传之外统一 json 吧。
|
34
SkyLine7 2019-10-15 11:05:43 +08:00
文件上传,formData,其他一律 json 或者 urlencoding
|