欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot 统一公共返回类的实现

程序员文章站 2022-06-21 11:10:54
目录项目结构统一返回类使用本文记录下如何在工程中,配置后台的统一公共返回类,这样做目的是为了统一返回信息,方便项目进行管理。使用技术:springboot+swagger+lombok项目结构具体过程...

本文记录下如何在工程中,配置后台的统一公共返回类,这样做目的是为了统一返回信息,方便项目进行管理。使用技术:springboot+swagger+lombok

项目结构

SpringBoot 统一公共返回类的实现

具体过程如下,在response文件夹下分别建立 customizeresultcode 接口,枚举类resultcode 实现customizeresultcode 接口和result类:

1 配置自定义返回类接口,该接口中包含 错误状态码和错误信息

public interface customizeresultcode {
    /*
    获取错误码
    @return 错误状态码
     */
    integer getcode();
    /*
    获取错误信息
    @return 错误信息
     */
    string getmessage();
}

2 配置返回实现类,注意这里是个枚举类,里面的编码仅供参考,可以自定义

/**
 * @description: 返回码定义
 * 规定:
 * #200表示成功
 * #400表示错误
 * #1001~1999 区间表示参数错误
 * #2001~2999 区间表示用户错误
 * #3001~3999 区间表示接口异常
 * #后面对什么的操作自己在这里注明就行了
 */
public enum resultcode implements customizeresultcode{
    /* 成功 */
    success(200, "成功"),
    /*错误*/
    error(400,"错误失败"),

    /* 默认失败 */
    common_fail(999, "失败"),

    /* 参数错误:1000~1999 */
    param_not_valid(1001, "参数无效"),
    param_is_blank(1002, "参数为空"),

    /* 用户错误 */
    user_not_login(2001, "用户未登录"),
    user_account_expired(2002, "账号已过期"),
    user_credentials_error(2003, "密码错误"),
    /*运行时异常*/
    arithmetic_exception(9001,"算数异常");
    ;
    private integer code;
    private string message;
    resultcode(integer code,string message){
        this.code=code;
        this.message=message;
    }
    @override
    public integer getcode() {
        return code;
    }

    @override
    public string getmessage() {
        return message;
    }
}

3 定义具体的返回类方法

@data
public class result {
    @apimodelproperty(value = "是否成功")
    private boolean success;
    @apimodelproperty (value= "返回码")
    private integer code;
    @apimodelproperty(value = "返回消息")
    private string message;
    @apimodelproperty(value = "返回数据")
    private map<string,object> data=new hashmap<>();
    /*
    构造方法私有化,里面的方法都为静态方法
    达到保护属性的作用
     */
    private result(){

    }
    /*
    使用链式编程
    该部分在项目组中一般是项目组长写好的
     */
    public static result ok(){
        result result=new result();
        result.setsuccess(true);
        result.setcode(resultcode.success.getcode());
        result.setmessage(resultcode.success.getmessage());
        return result;
    }

    public static result error(){
        result result=new result();
        result.setsuccess(false);
        result.setcode(resultcode.error.getcode());
        result.setmessage(resultcode.error.getmessage());
        return result;
    }
    /*
    自定义返回成功与否
     */
    public result success(boolean success){
        this.setsuccess(success);
        return this;
    }
    public result message(string message){
        this.setmessage(message);
        return this;
    }
    public result code(integer code){
        this.setcode(code);
        return this;
    }
    public result data(string key,object value){
        this.data.put(key,value);
        return this;
    }
    public result data(map<string,object>map){
        this.setdata(map);
        return this;
    }
}

统一返回类使用

controller在下面的文件中

SpringBoot 统一公共返回类的实现

@restcontroller
@enableautoconfiguration
@requestmapping("/system/info")
@api(value = "系统模块",tags="系统接口")
public class dcontroller {
    @autowired
    private dservice dservice;
    @getmapping
    @apioperation(value = "信息列表",notes = "查询所有信息")
    public result findds(){

        list<doctordict>list=dservice.list();
        //链式编程
        return result.ok().data("users",list);
    }
 }

测试结果成功

SpringBoot 统一公共返回类的实现

 到此这篇关于springboot 统一公共返回类的实现的文章就介绍到这了,更多相关springboot 统一公共返回类内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!