postman中 form-data,x-www-form-urlencoded,raw, binary 区别详解

一. form-data,x-www-form-urlencoded,raw, binary 区别

使用postman发送json格式数据时,body类型选raw,子类型选JSON,而不必自己设置header

1、form-data:

    就是http请求中的multipart/form-data,它**会将表单的数据处理为一条消息**,以标签为单元,用分隔符分开。由于有boundary隔离,所以multipart/form-data既**可以上传键值对,也可以上传文件**(正因为它采取键值对的方式,所以可以上传多个文件)。
    当上传的字段是文件时,会有Content-Type来说明文件类型;
    content-disposition:用来说明字段的一些信息;

2.x-www-form-urlencoded:

         就是application/x-www-from-urlencoded,会**将表单内的数据转换为键值对**,比如,name=java&age = 23

3、raw

        可以上传任意格式的文本,可以上传text、json、xml、html等   

4、binary

相当于Content-Type:application/octet-stream。只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。
multipart/form-data与x-www-form-urlencoded区别

multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;

x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。

深入理解post使用form-data和x-www-form-urlencoded的本质区别

一是数据包格式的区别,二是数据包中非ASCII字符怎么编码,是百分号转码发送还是直接发送。

application/x-www-form-urlencoded

  • 1、它是post的默认格式,使用js中URLencode转码方法。包括将name、value中的空格替换为加号;将非ascii字符做百分号编码;将input的name、value用‘=’连接,不同的input之间用‘&’连接。

    2、百分号编码什么意思呢。比如汉字‘丁’吧,他的utf8编码在十六进制下是0xE4B881,占3个字节,把它转成字符串‘E4B881’,变成了六个字节,每两个字节前加上百分号前缀,得到字符串“%E4%B8%81”,变成九个ascii字符,占九个字节(十六进制下是0x244534254238253831)。把这九个字节拼接到数据包里,这样就可以传输“非ascii字符的
    utf8编码的 十六进制表示的 字符串的 百分号形式。

    3、同样使用URLencode转码,这种post格式跟get的区别在于,get把转换、拼接完的字符串用‘?’直接与表单的action连接作为URL使用,所以请求体里没有数据;而post把转换、拼接后的字符串放在了请求体里,不会在浏览器的地址栏显示,因而更安全一些。

二、multipart/form-data

1、对于一段utf8编码的字节,用application/x-www-form-urlencoded传输其中的ascii字符没有问题,但对于非ascii字符传输效率就很低了(汉字‘丁’从三字节变成了九字节),因此在传很长的字节(如文件)时应用multipart/form-data格式。smtp等协议也使用或借鉴了此格式。
multipart/form-data将表单中的每个input转为了一个由boundary分割的小格式,没有转码,直接将utf8字节拼接到请求体中,在本地有多少字节实际就发送多少字节,极大提高了效率,适合传输长字节。

参考:
https://blog.csdn.net/wangjun5159/article/details/47781443

https://blog.csdn.net/u013827143/article/details/86222486

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值