SpringBoot之定义接口返回类型有几种方式?

本文详细介绍了在SpringBoot中定义接口返回类型的方法,包括通过`@RequestMapping(produces)`设置、通过请求头`Accept`设置和通过请求参数控制返回类型。文中列举了各种情况下的实现代码和示例,强调了返回类型选择的优先级顺序。
摘要由CSDN通过智能技术生成

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<&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值