赞
踩
MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。
类型格式:type/subtype(;parameter)? type
例如: Content-Type: text/html;charset:utf-8;
常见的媒体格式类型如下:
以application开头的媒体格式类型:
另外一种常见的媒体格式是上传文件之时使用的:
以上就是我们在日常的开发中,经常会用到的若干content-type的内容格式。
2.SpirngMVC和媒体类型
在不设置的情况下,springmvc默认媒体类型是application/x-www-form-urlencoded。(前端ajax不设置content-type,也默认pplication/x-www-form-urlencoded,就可以传递)
使用@RequestParam,使用application/x-www-form-urlencoded.
如果想接受application/json,需要加@RequestBody注解,@RequestBody用来处理媒体类型不是application/x-www-form-urlencoded的情况,r如application/json
@RequestMapping中指定consumes,可以用来过滤,比如下面,如果不是json和x-www-form-urlencoded,就无法请求到接口,会报错有提示信息;(如果不过滤,前后端媒体类型不对应的情况下,请求可以进入接口,只是传参失败)
@PostMapping(value = "/login/msg", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE, MediaType.APPLICATION_JSON_UTF8_VALUE, MediaType.APPLICATION_JSON_VALUE})
如果consumes指定application/json ,参数不用@RequestBody,请求可以进入接口,但传参无法成功。
@RequestBody适合参数是对象、不是基本数据类型的情况,否则会有编码问题,而且接口参数只有一个基本类型却使用对象接受,也没有必要。
转载前后端媒体类型的实验:
https://www.jianshu.com/p/b21555b84c89
https://blog.csdn.net/u014044812/article/details/78455053
用postman发起application/json:
https://blog.csdn.net/hao134838/article/details/71311957
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。