当前位置:   article > 正文

SpringBoot项目统一返回类_springboot 统一返回类

springboot 统一返回类

前言

为了让后端更方便的返回数据,也为了让前端去响应统一的返回体,我们需要在项目中自己创建规范的返回类,具体步骤如下所示

一、创建返回类所需要的接口

package com.example.springbootdemo.common.response;

/**
 * @ClassName: IResultCode
 * @Description: 统一状态码接口
 * @Author: WangBin
 * @Date: 2023/6/18 15:29
 */
public interface IResultCode {
    /**
     * 获取状态码
     *
     * @return 状态码
     */
    Integer getCode();

    /**
     * 获取返回消息
     *
     * @return 返回消息
     */
    String getMessage();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

二、创建实现返回类接口的枚举

package com.example.springbootdemo.common.response;

import lombok.Getter;

/**
 * @ClassName: ResultCode
 * @Description:
 * @Author: WangBin
 * @Date: 2023/6/18 15:30
 */
@Getter
public enum ResultCode implements IResultCode{

    /**
     * 成功
     */
    OK(200, "成功"),
    /**
     * 失败
     */
    ERROR(500, "失败"),
    SYSTEM_ERROR(501, "系统错误"),
    UNKNOWN_ERROR(502, "未知错误"),


    /* 参数错误:1000~1999 */
    PARAM_NOT_VALID(1001, "参数无效"),
    PARAM_IS_BLANK(1002, "参数为空"),
    PARAM_TYPE_ERROR(1003, "参数类型错误"),
    PARAM_NOT_COMPLETE(1004, "参数缺失"),
    PARAM_TYPE_REPEAT(1005,"参数重复"),

    /* 用户错误 */
    USER_NOT_LOGIN(2001, "用户未登录"),
    USER_ACCOUNT_EXPIRED(2002, "账号已过期"),
    USER_CREDENTIALS_ERROR(2003, "密码错误"),
    USER_CREDENTIALS_EXPIRED(2004, "密码过期"),
    USER_ACCOUNT_DISABLE(2005, "账号不可用"),
    USER_ACCOUNT_LOCKED(2006, "账号被锁定"),
    USER_ACCOUNT_NOT_EXIST(2007, "账号不存在"),
    USER_ACCOUNT_NOT_NULL(2013, "账号不能为空"),
    USER_CREDENTIALS_NOT_NULL(2014, "密码不能为空"),
    USER_ACCOUNT_ALREADY_EXIST(2008, "账号已存在"),
    USER_ACCOUNT_USE_BY_OTHERS(2009, "账号下线"),
    PASSWORD_SAME(2010, "新密码与原密码一致"),

    ACCOUNT_OR_PASSWORD_NOT_NULL(2016, "账号或者密码不能为空"),

    /* token错误 */
    TOKEN_IS_NULL(2011, "token不能为空"),
    TOKEN_INVALID(2012, "token失效"),
    TOKEN_ERROR(2015, "token错误"),

    /* 业务错误 */
    NO_PERMISSION(3001, "没有权限"),
    ADD_FAIL(3002, "新增失败"),
    UPDATE_FAIL(3003, "更新失败"),
    DELETE_FAIL(3004, "删除失败"),
    QUERY_FAIL(3005, "查询失败"),
    QUERY_EMPTY(3006, "查询为空"),
    QUERY_NOT_EXIST(3007, "查询不存在"),

    EMAIL_ERROR(2060, "邮箱格式错误"),
    PHONE_ERROR(2061, "电话格式错误"),

    EMAIL_REPEAT_ERROR(2062, "邮箱已存在"),

    /* 文件读写 */
    FILE_IS_NULL(2041, "文件为空"),
    FILE_WRONG_FORMAT(2042, "文件格式错误"),
    FILE_CHUNK_UPLOAD_ERROR(2043, "文件分块上传失败!"),
    FILE_CHUNK_MERGE_ERROR(2044, "文件分块合并失败"),
    FILE_CONTENT_ERROR(2045, "上传文件内容错误"),

    /** 数据导出 */
    EXPORT_FAILURE(2100, "导出失败"),
    /** 数据导入 */
    IMPORT_FAILURE(2101,"导入失败");

    /**
     * 返回码
     */
    private Integer code;

    /**
     * 返回消息
     */
    private String message;

    ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95

三、创建返回类

package com.example.springbootdemo.common.response;

//import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 统一API对象返回
 * @param <T>
 * @Author: TanXJ
 * @Date: 2021/10/13 9:31
 */
@Data
@NoArgsConstructor
public class ResultBean<T> {
    /** 状态码 */
    private Integer code;

    /** 返回消息 */
    private String message;

    /** 状态 */
    private boolean status;

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

    public ResultBean(Integer code, String message, boolean status, T data) {
        this.code = code;
        this.message = message;
        this.status = status;
        this.data = data;
    }

    public ResultBean(ResultCode resultCode, boolean status, T data) {
        this.code = resultCode.getCode();
        this.message = resultCode.getMessage();
        this.status = status;
        this.data = data;
    }

    public ResultBean(ResultCode resultCode, boolean status) {
        this.code = resultCode.getCode();
        this.message = resultCode.getMessage();
        this.status = status;
        this.data = null;
    }

    public static <T> ResultBean success() {
        return new ResultBean<>(ResultCode.OK, true);
    }

    public static <T> ResultBean message(String message) {
        return new ResultBean<>(ResultCode.OK.getCode(), message, true, null);
    }

    public static <T> ResultBean success(T data) {
        return new ResultBean<>(ResultCode.OK, true, data);
    }

    public static <T> ResultBean fail() {
        return new ResultBean<>(ResultCode.ERROR, false);
    }

    public static <T> ResultBean fail(ResultCode resultCode) {
        return new ResultBean<>(resultCode, false);
    }

    public static <T> ResultBean fail(Integer code, String message) {
        return new ResultBean<>(code, message, false, null);
    }

    public static <T> ResultBean fail(ResultCode resultCode, T data) {
        return new ResultBean<>(resultCode, false, data);
    }

    public static <T> ResultBean fail(Integer code, String message, T data) {
        return new ResultBean<>(code, message, false, data);
    }

}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83

四、在控制层测试返回类

package com.example.springbootdemo.controller;

import com.example.springbootdemo.common.response.ResultBean;
import com.example.springbootdemo.common.response.ResultCode;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName: TestController
 * @Description:
 * @Author: WangBin
 * @Date: 2023/6/17 19:38
 */
@RestController
public class TestController {

    @RequestMapping("/")
    public String test() {
        System.out.println("请求成功");
        return "请求成功";
    }

	@RequestMapping("/test1")
    public ResultBean test1(){
//        return ResultBean.success();  // 这是返回接口响应成功,不返回任何消息
//        return ResultBean.success("响应成功!"); // 接口响应成功后返回字符串
//        return ResultBean.success(data);  // 接口响应成功后返回数据
//        return ResultBean.fail(ResultCode.ERROR);  // 接口响应失败后返回枚举
        return ResultBean.fail(999,"自定义错误");
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

五、在前端测试返回类

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/183987?site
推荐阅读
相关标签
  

闽ICP备14008679号