http协议的基础知识首先需要知道什么是媒体类型吗?
一般来说,http协议使用文本/html、应用程序/JSON等媒体类型。 其中text表示媒体,html表示格式
这意味着,通过http协议(如客户端和浏览器)进行通信的双方都必须彼此告知自己发送的内容的格式和格式
这两个功能通过http header的Content-Type头部和Accept头部来实现
@RequestMapping为这两个头部的使用提供springmvc @RequestMapping注释,提供基于MediaType过滤的功能,在Content-Type或Accept头部提供一些MMP
produces ) )属性具有两个功能
功能1 )如果请求标头中的Accept值与produces )配置中的属性匹配,则进行映射,否则返回客户端http406(notacceptable )响应或415 unsupported mediaType
功能2 :缺省情况下,将produces配置的内容写入响应标头的Content-Type
使用postman的示例
例1 ) produces ) )属性时,基于Accept请求头部输出响应头部的Content-Type
示例produces (设置属性时,Accept必须与设置的属性兼容。 如果不兼容,则抛出406或415异常
示例3 )设置produces )属性时,如果未设置Accept请求标头,则默认值为*/*,响应标头的Content-Type将根据produces属性输出
consumes (属性consumes属性的作用与produces类似,但关注请求的ContentType标头信息。 如果请求标头中Content-Type的值与consumes ()配置中的属性匹配,则映射该值;否则映射415 unsupported mediaType
源代码这一内容属于springmvc内容协商部分
org.spring framework.web.servlet.MVC.method.annotation.abstractmessageconvertermethodprocessor # writewithmesssageeege
从Accept请求报头中,端点希望返回给服务器端的媒体类型listmediatyperequestedmediatypes=getacceptablemediatypes (request ); //可生产的介质类型setmediatypemediatypes=(set media type ) request.getattribute (handler mapping.produ cible _ media _ types 如果兼容,则返回兼容的媒体类型//如果不兼容,则返回媒体类型(if ) ) if )输出值!=null } { thrownewhtpmediatypenotacceptableexception (produciblemediatypes ); } return; }