Springboot项目返回数据统一封装

        Springboot项目返回数据统一封装,支持swagger。

        正常swagger会根据数据库表的注释显示对应的参数释义等。但当我们使用统一接口返回map时,部分注释等信息会被掩盖消失。在此提供三个java类即可满足统一封装返回接口,也可显示对应的swagger释义等。

1.ErrorCode.java

package com.hng.error;

/**
 * @Author: 郝南过
 * @Description: TODO
 * @Date: 2023/11/14 10:56
 * @Version: 1.0
 */
public interface ErrorCode {

    String getCode();

    String getMessage();
}

2.ErrorEnum.java

package com.hng.error;

public enum ErrorEnum implements ErrorCode {
    /**
     * 成功
     */
    SUCCESS("SUCCESS", "成功"),

    //*********************系统异常*********************//
    /**
     * 请求失败(外域请求等)
     */
    REQUEST_FAIL("REQUEST_FAIL", "请求失败"),
    /**
     * 系统异常
     */
    SYSTEM_ERROR("SYSTEM_ERROR", "系统异常"),
    /**
     * 操作超时
     */
    OP_TIMEOUT("OP_TIMEOUT", "操作超时,请重试"),
    /**
     * 操作冲突(乐观锁、并发)
     */
    OP_CONFLICT("OP_CONFLICT", "操作冲突"),
    /**
     * 数据库执行错误
     */
    DB_ERROR("DB_ERROR", "数据库执行错误"),

    //*********************业务类异常*********************//
    /**
     * 参数错误
     */
    PARAMETER_ERROR("PARAMETER_ERROR", "参数错误"),
    /**
     * 没有权限
     */
    NO_PRIVILEGE("NO_PRIVILEGE", "没有权限"),
    /**
     * 数据异常(数据校验不通过等)
     */
    DATA_ERROR("DATA_ERROR", "数据异常"),
    /**
     * 数据不存在(数据校验等)
     */
    DATA_NOT_FOUND("DATA_NOT_FOUND", "数据不存在"),
    /**
     * 数据已存在(数据校验等)
     */
    DATA_EXIST("DATA_EXIST", "数据已存在");


    /**
     * 结果码
     */
    private String code;

    /**
     * 结果信息
     */
    private String message;

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

    @Override
    public String getCode() {
        return this.code;
    }

    @Override
    public String getMessage() {
        return this.message;
    }
}

 3.Result.java

package com.hng.response;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hng.error.ErrorEnum;
import lombok.Data;

@Data
public class Result<T> {
    private String code;
    private String msg;
    private T data;

    @JsonIgnore
    public boolean getSuccess() {
        return this.code.equals(ErrorEnum.SUCCESS.getCode());
    }

    private Result(String code, String  msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    private Result(ErrorEnum errorEnum, T data) {
        this.code = errorEnum.getCode();
        this.msg = errorEnum.getMessage();
        this.data = data;
    }

    public static <T> Result<T> Result(ErrorEnum errorEnum, T data) {
        return new Result<>(errorEnum, data);
    }

    public static <T> Result<T> Result(String code, String msg, T data) {
        return new Result<>(code, msg, data);
    }
}

4.controller中使用

    @ResponseBody
    @PostMapping("/getUser")
    public Result<SysUser> getUserById(@RequestParam Long userId){
        SysUser sysUser = sysUserService.getUserById(userId);
        if (Objects.isNull(sysUser)) {
            return Result.Result(ErrorEnum.DATA_NOT_FOUND, null);
        }
        return Result.Result(ErrorEnum.SUCCESS, sysUser);
    }

5.结果展示

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝南过

感谢大佬打赏,送你一个么么哒

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值