springboot配置统一返回结果集

目录

  • 一、使用统一返回结果集意义
  • 二、ApiResponse代码解读
  • 三、ResponseCode枚举类的解读
  • 四、整体代码

一、使用统一返回结果集意义

使用统一返回结果集的意义在于规范接口返回数据的格式,方便前后端交互和协作开发。通过约定一个统一的返回格式,可以大大减少前后端实现上的沟通成本,并且增强了代码的可维护性和可读性。

二、ApiResponse代码解读

定义一个泛型类 ApiResponse,表示API接口返回的响应数据。

@Data
public class ApiResponse<T> {

使用 Lombok 的 @Data 注解自动生成 Getter、Setter 和其他常见方法。T 表示泛型。

    private final int code;
    private final String message;
    private final T data;

声明三个私有成员变量 codemessagedata,分别表示响应码、消息和数据。

    public ApiResponse(ResponseCode responseCode, T data) {
        this.code = responseCode.getCode();
        this.message = responseCode.getMessage();
        this.data = data;
    }

定义构造方法 ApiResponse,接收两个参数 responseCodedata,在构造对象时将 responseCode 中的响应码和消息赋值给 codemessage,将传入的 data 赋值给 this.data

    public static <T> ApiResponse<T> success(T data) {
        return new ApiResponse<T>(ResponseCode.SUCCESS, data);
    }

定义静态方法 success,接收一个 data 参数,该方法返回 ApiResponse 类型,其中调用构造方法 ApiResponse,将响应码为 SUCCESS 和传入的 data 作为参数创建对象。

    public static <T> ApiResponse<T> failed(ResponseCode responseCode) {
        return new ApiResponse<T>(responseCode, null); // data为null
    }

定义静态方法 failed,接收一个 responseCode 参数,该方法返回 ApiResponse 类型,其中调用构造方法 ApiResponse,将传入的响应码和 null 作为数据参数创建对象。

三、ResponseCode枚举类的解读

定义一个 Java 枚举类型 ResponseCode,它包含 5 个常量:

  • SUCCESS:表示请求成功,对应的状态码为 200。
  • INVALID_INPUT:表示输入无效,对应的状态码为 400。
  • UNAUTHORIZED:表示未经授权,对应的状态码为 401。
  • NOT_FOUND:表示未找到,对应的状态码为 404。
  • INTERNAL_SERVER_ERROR:表示服务器内部错误,对应的状态码为 500。

每个枚举常量都有一个 int 类型的 code 和一个 String 类型的 message 属性,分别用于存储状态码和消息文本。在枚举类中,声明了一个构造函数来初始化枚举常量的属性,并提供了访问这些属性的方法 getCode()getMessage()

四、整体代码

@Data
public class ApiResponse<T> {
    private final int code;
    private final String message;
    private final T data;

    // 省略构造方法和Getter/Setter

    public ApiResponse(ResponseCode responseCode, T data) {
        this.code = responseCode.getCode();
        this.message = responseCode.getMessage();
        this.data = data;
    }
    public static <T> ApiResponse<T> success(T data) {
        return new ApiResponse<T>(ResponseCode.SUCCESS, data);
    }

    public static <T> ApiResponse<T> failed(ResponseCode responseCode) {
        return new ApiResponse<T>(responseCode, null); // data为null
    }

}
public enum ResponseCode {
    SUCCESS(200, "请求成功"),
    INVALID_INPUT(400, "无效的输入"),
    UNAUTHORIZED(401, "未经授权"),
    NOT_FOUND(404, "未找到"),
    INTERNAL_SERVER_ERROR(500, "服务器内部错误");

    private final int code;
    private final String message;

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

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

附返回成功样式:
springboot配置统一返回结果集_第1张图片

你可能感兴趣的:(前后端分离项目,spring,boot,java,spring)