MENU

form-data、x-www-form-urlencoded、raw、binary的区别

February 25, 2020 • Read: 900 • 编程之路,Java

1、application/x-www-from-urlencoded

  • 窗体数据被编码为键值对,不同键值对用&分隔,这是标准的编码格式。
  • 它是post的默认格式,使用js中URLencode转码方法。包括将键值对中的空格替换为加号,将非ascii字符做百分号编码

    • 百分号编码:汉字转化为UTF-8编码,并在每一个字节前面加%。以残夜为例,的UTF-8编码是E6 AE 8BE5 A4 9C,拼接后是%E6%AE%8B%E5%A4%9C拼接后变成九个ascii字符,占九个字节。

数据格式:

2、multipart/form-data

  • 数据包格式:会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;
  • 由于有boundary(分割线)隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。
  • 传输非ascii码字符时,一个汉字占用的3个字节会直接以utf-8编码形式拼到数据包中,因此,只占用三个字节。极大提高了效率,适合传输长字节。

数据格式:

Controller层

  • @RequestParam:

    • GET:支持(单个参数)
    • POST:支持x-www-form-urlencoded,不支持Json、XML(”status”: 400)
  • @RequestBody:

    • GET:不支持
    • POST:不支持x-www-form-urlencoded(”status”: 415),支持Json、XML(解析为javabean)

3、raw

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

4、binary

  • 相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。
- - - 结束 - - -
  • 文章标题:form-data、x-www-form-urlencoded、raw、binary的区别
  • 文章链接:https://blog.canye365.cn/archives/211.html
  • 版权所有:本文版权归 残夜 所有,转载请注明出处!除特殊注明外 (如有侵权,请 点此联系我 )