@GetMapping 与 @PostMapping 内部有两个属性定义数据格式:
consumes: 定义接口接收的数据格式
produces: 定义接口返回的数据格式
也就是请求头(consumes),返回头( produces)
首先在pom文件里添加依赖
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
controller里接口写法:
//这是返回xml格式的写法
@GetMapping(path = "/call",produces = "application/xml;charset=utf-8")
public XmlTestDo call(){
XmlTestDo xmlTestDo = new XmlTestDo();
xmlTestDo.setInfoType("aa");
return xmlTestDo;
}
//返回和接受都是xml格式的写法
@PostMapping(path = "xml/callback",
consumes = {"application/xml", "text/xml"},
produces = "application/xml;charset=utf-8")
public XmlTestDo call(@RequestBody XmlTestDo msg, HttpServletRequest request) {
XmlTestDo res = new XmlTestDo();
res.setInfoType(msg.getInfoType());
return res;
}
下面是实体类的写法:
使用JacksonXmlRootElement和JacksonXmlProperty注解
它们的实际作用与json传输时,使用JsonProperty来指定json key的作用相仿
@Data
@JacksonXmlRootElement(localName = "xml")
//JacksonXmlRootElement注解,定义返回的xml文档中最外层的标签名
public class XmlTestDo {
@JacksonXmlProperty(localName = "InfoType")
private String infoType;
//JacksonXmlProperty 注解,定义每个属性值对应的标签名
}
在postman里测试