1、application/x-www-from-urlencoded
- 窗体数据被编码为键值对,不同键值对用&分隔,这是标准的编码格式。
它是post的默认格式,使用js中URLencode转码方法。包括将键值对中的空格替换为加号,将非ascii字符做百分号编码。
- 百分号编码:汉字转化为UTF-8编码,并在每一个字节前面加%。以
残夜
为例,残
的UTF-8编码是E6 AE 8B
,夜
是E5 A4 9C
,拼接后是%E6%AE%8B%E5%A4%9C
,拼接后变成九个ascii字符,占九个字节。
- 百分号编码:汉字转化为UTF-8编码,并在每一个字节前面加%。以
数据格式:
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
,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。
- - - 结束 - - -