是什么?
一种约定俗成的规约,比如项目中规定你返回什么东西的时候需要用Result返回
使用场景
为请求响应信息新增code、success字段,方便判断当前请求是否正常返回
在代码中使用
1️⃣在src/main/java/.../common/convention/result路径下新建Result类和Results类
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
| /** * 全局返回对象 */ @Data @Accessors(chain = true) //开启链式 public class Result<T> implements Serializable {
@Serial private static final long serialVersionUID = 5679018624309023727L;
/** * 正确返回码 */ public static final String SUCCESS_CODE = "0";
/** * 返回码 */ private String code;
/** * 返回消息 */ private String message;
/** * 响应数据 */ private T data;
/** * 请求ID */ private String requestId;
public boolean isSuccess() { //json小知识点:isSuccess会自动序列化成success return SUCCESS_CODE.equals(code); } }
|
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
| /** * 全局返回对象构造器 */ public final class Results {
/** * 构造成功响应 */ public static Result<Void> success() { return new Result<Void>() .setCode(Result.SUCCESS_CODE); }
/** * 构造带返回数据的成功响应 */ public static <T> Result<T> success(T data) { return new Result<T>() .setCode(Result.SUCCESS_CODE) .setData(data); }
/** * 构建服务端失败响应 */ public static Result<Void> failure() { return new Result<Void>() .setCode(BaseErrorCode.SERVICE_ERROR.code()) .setMessage(BaseErrorCode.SERVICE_ERROR.message()); }
/** * 通过 {@link AbstractException} 构建失败响应 */ public static Result<Void> failure(AbstractException abstractException) { String errorCode = Optional.ofNullable(abstractException.getErrorCode()) .orElse(BaseErrorCode.SERVICE_ERROR.code()); String errorMessage = Optional.ofNullable(abstractException.getErrorMessage()) .orElse(BaseErrorCode.SERVICE_ERROR.message()); return new Result<Void>() .setCode(errorCode) .setMessage(errorMessage); }
/** * 通过 errorCode、errorMessage 构建失败响应 */ public static Result<Void> failure(String errorCode, String errorMessage) { return new Result<Void>() .setCode(errorCode) .setMessage(errorMessage); } }
|
🚩为什么需要Results?
省去重复创建Result对象以及设置相关属性的步骤
2️⃣在代码中使用
在controller中使用
1
| return Results.success(...);
|