SpringBoot系列教程之定义接口返回类型的几种方式

SpringBoot 系列教程之定义接口返回类型的几种方式

实现一个 web 接口返回 json 数据,基本上是每一个 javaer 非常熟悉的事情了;那么问题来了,如果我有一个接口,除了希望返回 json 格式的数据之外,若也希望可以返回 xml 格式数据可行么?

答案当然是可行的,接下来我们将介绍一下,一个接口的返回数据类型,可以怎么处理

I. 项目搭建

本文创建的实例工程采用SpringBoot 2.2.1.RELEASE + maven 3.5.3 + idea进行开发

1. pom 依赖

具体的 SpringBoot 项目工程创建就不赘述了,对于 pom 文件中,需要重点关注下面两个依赖类


    
        org.springframework.boot
        spring-boot-starter-web
    
    
        com.fasterxml.jackson.dataformat
        jackson-dataformat-xml
    

复制代码

注意 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 {
        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 xml() {
        return new ResVo<>(0, "ok", "返回xml");
    }

    @GetMapping(path = "/json"

你可能感兴趣的:(java,面试,后端,spring,boot,java,mybatis,spring,面试)