springboot2.x 5.全局统一返回格式 - Go语言中文社区

springboot2.x 5.全局统一返回格式


引入所需要的库

lombok用于生产get set方法

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

创建返回格式的实体类

package com.imsjw.demo.entity;


import lombok.Getter;
import lombok.Setter;
import lombok.ToString;


/**
 * 统一返回结果
 *
 * @author imsjw
 * Create Time: 2019/6/11
 */
@Getter
@Setter
@ToString
public class Result<T> {

    public static final Result OK = new Result(0, "OK");
    public static final Result UnknownError = new Result(1, "未知错误");
    public static final Result TokenError = new Result(2, "token 错误");
    public static final Result AuthorizationError = new Result(3, "权限不足");

    /**
     * 返回码
     * 0 ok
     * 1 未知错误
     * 2 参数不符合规则
     */
    private Integer code;

    /**
     * 返回数据
     */
    private T data;

    public Result() {

    }

    public Result(Integer code, T data) {
        this.code = code;
        this.data = data;
    }

    /**
     * 获取无效参数的Result
     *
     * @return
     */
    public static Result getInvalidParamResult(String data) {
        return new Result<>(2, data);
    }

    /**
     * 获取无效参数的Result
     *
     * @param data
     * @return
     */
    public static Result getInvalidParamResult(Object data) {
        return new Result<>(2, data);
    }

    public static Result Success(Object object) {
        return new Result(0, object);
    }
}

在这里插入图片描述

全局异常处理器修改 GlobalExceptionHandler

package com.imsjw.demo.config;

import com.imsjw.demo.entity.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;


@ControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 基本异常处理
     *
     * @param e
     */
    @ResponseBody
    @ExceptionHandler(value = Exception.class)
    public Result basicExceptionHandling(Exception e) {
        return Result.UnknownError;
    }

}

Controller修改

package com.imsjw.demo.controller;

import com.imsjw.demo.entity.Result;
import com.imsjw.demo.service.DemoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

@Controller
@RequestMapping("/demo")
public class DemoController {

    @Resource
    private DemoService demoService;

    @ResponseBody
    @RequestMapping("/test")
    public Result test() {
        return Result.Success(demoService.testConfig());
    }

}

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.imsjw</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/imsjw/article/details/100082750
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢