package com.upc.practice2023.base.responseparam;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@AllArgsConstructor
@NoArgsConstructor
public class R<T> {
private Integer code;
private String message;
private T data;
public static <T> R<T> commonReturn(Integer code, String message, T data) {
return new R<>(code, message, data);
}
public static <T> R<T> ok(T data) {
return new R<>(200, "请求成功", data);
}
public static <T> R<T> ok() {
return R.ok(null);
}
public static <T> R<T> fail() {
return R.fail("请求错误");
}
public static <T> R<T> fail(String message) {
return new R<>(400, message, null);
}
public static <T> R<T> unauthorized() {
return new R<>(401, "请登陆后重试", null);
}
public static <T> R<PageBaseReturnParam<T>> page(PageBaseReturnParam<T> param) {
return R.ok(param);
}
}
这段代码是一个通用的响应参数类 R<T>
,用于封装接口返回的数据。
代码解释如下:
@Data
注解由 Lombok 提供,用于自动生成 getter、setter、toString、equals 等方法。@Accessors(chain = true)
注解也是 Lombok 提供的,用于生成链式调用的 setter 方法。@JsonInclude(JsonInclude.Include.NON_NULL)
注解表示在序列化时忽略值为null
的字段。@AllArgsConstructor
注解由 Lombok 提供,用于生成一个包含所有参数的构造方法。@NoArgsConstructor
注解由 Lombok 提供,用于生成一个无参的构造方法。
类中的字段包括:
code
:响应状态码message
:响应消息data
:响应数据
该类还定义了一些静态方法,用于创建不同类型的响应参数对象:
commonReturn
:根据指定的状态码、消息和数据创建响应参数对象。ok
:创建一个成功的响应参数对象,并设置默认的成功状态码和消息。fail
:创建一个失败的响应参数对象,并设置默认的失败状态码和消息。unauthorized
:创建一个未授权的响应参数对象,并设置默认的未授权状态码和消息。page
:创建一个分页响应参数对象,其中的数据为PageBaseReturnParam<T>
类型。
使用该类时,可以通过静态方法来创建不同类型的响应参数对象,然后将其作为接口的返回值进行返回。
// 创建一个成功的响应参数对象,设置数据为 user 对象
R<User> response = R.ok(user);
// 创建一个失败的响应参数对象,自定义错误消息
R<?> response = R.fail("请求错误");
// 创建一个分页响应参数对象,设置分页数据
PageBaseReturnParam<User> pageData = new PageBaseReturnParam<>(users, total);
R<PageBaseReturnParam<User>> response = R.page(pageData);