postman中form-data、x-www-form-urlencoded、raw、binary的区别
在日常开发中,通常会因为提交数据的方式不同而导致各种各样的问题,归根结底是因为未能正确认识到POST方式上传数据的几种方式的区别。所以很有必要研究一下这几种提交方式的区别。
form-data方式:表示http请求中的multipart/form-data方式,会将表单的数据处理为一条消息,用分割符隔开,可以上传键值对或者上传文件.比如按照如下方式传输提交数据:
![](https://i-blog.csdnimg.cn/blog_migrate/0f5f8f877b438b664368b9fdb3f2f60c.png)
则上传的数据为:
--l_Sh3DQ0_nc-zPblBpi8L3Oq63BWUDLqDqbRpyd
Content-Disposition: form-data; name="name"
Content-Type: text/plain;charset=UTF-8
Content-Length: 12
wangjianfeng
--l_Sh3DQ0_nc-zPblBpi8L3Oq63BWUDLqDqbRpyd
Content-Disposition: form-data; name="age"
Content-Type: text/plain;charset=UTF-8
Content-Length: 2
20
--l_Sh3DQ0_nc-zPblBpi8L3Oq63BWUDLqDqbRpyd--
上面数据采用了以--开头和结尾的字串作为分割符,把不同的字段分割开来。所以可以同时上传多个文件以及多个键值对。
x-www-form-urlencoded:会把表单数据转换为键值对,以上面的例子来说,上传的数据为:
name=wangjianfeng&age=12
multipart/form-data与x-www-form-urlencoded的区别
multipart/form-data:可以上传文件或者键值对,最后都会转化为一条消息
x-www-form-urlencoded:只能上传键值对,而且键值对都是通过&间隔分开的。
raw:可以上传任意格式的文本,文本不做任何修饰传到服务端。比如传一些xml,或者json数据,或者text文本数据。
binary:相当于Content-Type:application/octet-stream,只可以上传二进制数据,通常用来上传文件,但是一次只能上传一个文件。