SpringBoot同时支持返回xml和json

@produces注解

用于过滤请求头的Accept属性,当请求头与produces不对应时;报406

@consumes注解

用于过滤请求头的Content-type属性,当请求头与consumes不对应时;报415

引入依赖

版本号不对应,启动容器会报错

对象使用xml注解标注

类用@XmlRootElement标注

get方法用@XmlElement标注

控制器方法使用@produces标注返回类型为application/xml

成功响应

返回json

可见@produces不止可以过滤请求Accept属性,同时可以指定响应类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot中,我们可以使用Jackson库来实现XMLJSON之间的互转。以下是一个简单的示例: 首先需要在pom.xml文件中添加Jackson的依赖: ```xml <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> ``` 然后,在实体类中添加注解以指定XML元素名称: ```java @Data @AllArgsConstructor @NoArgsConstructor @XmlRootElement(name = "person") @XmlAccessorType(XmlAccessType.FIELD) public class Person { @XmlElement(name = "name") private String name; @XmlElement(name = "age") private int age; } ``` 在控制器中,我们可以使用`@RequestMapping`注解来定义请求处理程序方法,并使用`@RequestBody`和`@ResponseBody`注解来指定请求和响应的格式: ```java @RestController @RequestMapping("/api") public class ApiController { @PostMapping(value = "/xml-to-json", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_XML_VALUE) public Person xmlToJson(@RequestBody Person person) { return person; } @PostMapping(value = "/json-to-xml", produces = MediaType.APPLICATION_XML_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) public Person jsonToXml(@RequestBody Person person) { return person; } } ``` 在上面的代码中,`xmlToJson`方法将接收XML格式的请求体,并返回JSON格式的响应体。`jsonToXml`方法将接收JSON格式的请求体,并返回XML格式的响应体。 注意,在`@PostMapping`注解中,我们使用`produces`和`consumes`属性来指定请求和响应的格式。 现在,我们可以使用任何HTTP客户端来测试这些API了。例如,我们可以使用cURL命令发送一个XML格式的请求: ```bash curl -X POST \ http://localhost:8080/api/xml-to-json \ -H 'Content-Type: application/xml' \ -d '<person><name>John</name><age>30</age></person>' ``` 这将返回一个JSON格式的响应: ```json { "name": "John", "age": 30 } ``` 我们还可以使用cURL命令发送一个JSON格式的请求: ```bash curl -X POST \ http://localhost:8080/api/json-to-xml \ -H 'Content-Type: application/json' \ -d '{"name": "John", "age": 30}' ``` 这将返回一个XML格式的响应: ```xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <person> <name>John</name> <age>30</age> </person> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值