springboot内容协商

1.基于请求头 Accept: application/json
Accept: application/xml
Accept: application/xxx 自定义数据

发的请求头的数据类型 期望返回的数据类型

2.通过请求参数 例如 /football?format=json

一般@respondbody 默认以json方式进行返回

如何请求同一个接口,可以返回json和xml不同格式的数据

com.fasterxml.jackson.dataformat
jackson-dataformat-xml

对应bean上
@JacksonXmlRootElement // 可以写出为xml文档

springboot内容协商_第1张图片
springboot内容协商_第2张图片
accept是*/*

springboot内容协商_第3张图片
更改Accept 为application/xml

基于请求头(Accept) 默认开启
基于请求参数内容协商 需要开启
contentnegotiation:
favor-parameter: true
format=json根据format来返回参数值
parameter-name=type

根据type来返回

内容协商原理简介:
一般controller上如果加了@ResponseBody 由HttpMessageConverter进行处理
1.遍历所有MessageConverter 看哪个支持请求内容类型的数据
2.找到了(比如 MappingJackson2HttpMessageConverter后(支持写出json)) jackson用ObjectMapper把对象写出去

你可能感兴趣的:(spring,boot,java,spring)