http协议基础知识
首先需要了解什么叫MediaType(媒体类型)?
通俗来说,在http协议中,用来表示传输内容的格式就是MediaType,比如text/html,application/json等,其中text代表介质,html代表格式
也就是经过http协议通信的双方,比如客户端和浏览器,要彼此告诉对方自己发送的内容是什么格式,期望获取的结果是什么格式
这两个功能是通过http header中的Content-Type
头部和Accept
头部来体现的
@RequestMapping对这两个头部的使用
而在springmvc @RequestMapping注解,其提供了根据MediaType进行过滤的功能,仅当Content-Type或Accept头部带有某些MediaType的时候,其才会进行映射
produces()属性
其功能有两个
功能1:当请求头中
Accept
的value与produces()配置的属性匹配上,则进行映射,否则返回客户端HTTP 406(Not Acceptable)响应,或415 unsupported mediaType功能2:默认会把produces中配置的内容写到响应头的Content-Type中去
例1:当不配置produces()属性的时候,会根据Accept请求头来输出响应头的Content-Type
例2:当配置produces()属性的时候,需要Accept与配置的属性兼容,否则会抛出406或415异常
例3:当配置produces()属性的时候,如果未设置Accept请求头,那么默认就是/,会根据produces属性来输出响应头的Content-Type
consumes()属性
consumes属性的工作方式类似于produces,不过它会关注请求的ContentType头部信息。当请求头中Content-Type的value与consumes()配置的属性匹配上,则进行映射,否则415 unsupported mediaType