什么样的接口返回实体是好的呢?这个问题在我入行的时候困扰我很久,用过各种各样的。下面是我总结的,不用乱七八糟的高级语法啥的,根据不一样的业务写不一样的就好了,真正等你大手一挥重复造轮子的时候也不会限制于你。
package cn.haigle.virtue.common.pojo;
import cn.haigle.virtue.common.exception.enums.CodeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* 接口通用返回
* @param <T> 数据泛型
* @author haigle
* @date 2019/9/6 15:18
*/
@Data
public class ApiResult<T> implements Serializable {
@Schema(description = "编码CODE", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer code;
@Schema(description = "提示", requiredMode = Schema.RequiredMode.REQUIRED)
private String message;
@Schema(description = "返回数据集", requiredMode = Schema.RequiredMode.REQUIRED)
private T data;
public static <T> ApiResult<T> ok() {
return restResult(CodeConstants.OK.value(), CodeConstants.OK.name(), null);
}
public static <T> ApiResult<T> ok(T data) {
return restResult(CodeConstants.OK.value(), CodeConstants.OK.name(), data);
}
public static <T> ApiResult<T> ok(String message, T data) {
return restResult(CodeConstants.OK.value(), message, data);
}
public static <T> ApiResult<T> fail() {
return restResult(CodeConstants.FAIL.value(), CodeConstants.FAIL.name(), null);
}
public static <T> ApiResult<T> fail(String message) {
return restResult(CodeConstants.FAIL.value(), message, null);
}
public static <T> ApiResult<T> fail(String message, T data) {
return restResult(CodeConstants.FAIL.value(), message, data);
}
public static <T> ApiResult<T> code(int code, String message) {
return restResult(code, message, null);
}
private static <T> ApiResult<T> restResult(Integer code, String message, T data) {
ApiResult<T> apiResult = new ApiResult<>();
apiResult.setCode(code);
apiResult.setMessage(message);
apiResult.setData(data);
return apiResult;
}
}
package cn.haigle.virtue.common.exception.enums;
/**
* 枚举类型
* @author haigle
* @date 2020/11/7 9:31 下午
*/
public enum CodeConstants {
/**
* {@code 200 OK}.
* 一切正确的都用这个
*/
OK(200, "OK"),
FAIL(500, "FAIL"),
USER_ERROR(400, "账号或密码错误"),
TOKEN_ERROR(401, "TOKEN错误"),
TOKEN_EXPIRED(402, "登录过期, 请重新登录"),
FORM_VALIDATION_ERROR(901, "FORM_VALIDATION_ERROR"),
NOT_PERMISSION_EXPIRED(403, "无权限访问"),
EMAIL_EXIST(405, "邮箱已注册"),
CAPTCHA_NOT_SENT(405, "未获取验证码"),
CAPTCHA_ERROR(405, "验证码不正确"),
EMAIL_FORMAT_ERROR(405, "邮箱格式不正确"),
REDIS_EXPIRED(501, "Redis数据库错误"),
FILE_UPLOAD_FAIL_EXPIRED(521, "上传失败"),
VARIFY_FIELD_ERROR(901, "验证错误"),
/**
* {@code 401 Unauthorized}.
* 权限错误
*/
UNAUTHORIZED(401, "Unauthorized");
private final int value;
private final String name;
CodeConstants(Integer value, String name) {
this.value = value;
this.name = name;
}
/**
* Return the integer value of this status code.
*/
public Integer value() {
return this.value;
}
}