SpringBoot 系列教程之定义接口返回类型的几种方式
实现一个 web 接口返回 json 数据,基本上是每一个 javaer 非常熟悉的事情了;那么问题来了,如果我有一个接口,除了希望返回 json 格式的数据之外,若也希望可以返回 xml 格式数据可行么?
答案当然是可行的,接下来我们将介绍一下,一个接口的返回数据类型,可以怎么处理
I. 项目搭建
本文创建的实例工程采用SpringBoot 2.2.1.RELEASE
+ maven 3.5.3
+ idea
进行开发
1. pom 依赖
具体的 SpringBoot 项目工程创建就不赘述了,对于 pom 文件中,需要重点关注下面两个依赖类
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
</dependencies>
注意 jackson-datafromat-xml
这个依赖,加上这个主要时为了支持返回 xml 格式的数据
II. 返回类型设置的多种方式
正常来讲,一个 RestController 的接口,默认返回的是 Json 格式数据,当我们引入了上面的 xml 包之后,会怎样呢?返回的还是 json 么?
1.通过 produce 设置返回类型
如果一个接口希望返回 json 或者 xml 格式的数据,最容易想到的方式就是直接设置RequestMapping
注解中的 produce 属性
这个值主要就是用来设置这个接口响应头中的content-type
; 如我们现在有两个接口,一个指定返回 json 格式数据,一个指定返回 xml 格式数据,可以如下写
@RestController
public class IndexRest {
@Data
public static class ResVo<T> {
private int code;
private String msg;
private T data;
public ResVo(int code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
}
@GetMapping(path = "/xml", produces = {MediaType.APPLICATION_XML_VALUE})
public ResVo<String> xml() {
return new ResVo<&