通用的返回类
package com.aaa.cache.common.lang.util;
import com.aaa.cache.common.lang.enums.ResultCode;
import lombok.Data;
import java.io.Serializable;
/**
* 通用的 返回数据
*/
@Data
public class R<T> implements Serializable {
private Integer code;
private String message;
private T data;
private R() {
}
public R(ResultCode resultCode) {
this.code = resultCode.getCode();
this.message = resultCode.getMessage();
}
// 后端使用 通用正确
public static <T> R<T> ok() {
return new R<>(ResultCode.OK);
}
// 后端使用通用错误
public static <T> R<T> fail() {
return new R<>(ResultCode.INTERNAL_SERVER_ERROR);
}
public static <T> R<T> fail(Integer code, String message) {
R<T> r = new R<>();
r.code=code;
r.message=message;
return r;
}
public static <T> R<T> fail(ResultCode resultCode) {
return new R<>(resultCode);
}
// 前后端时使用 成功
public static <T> R<T> clientOk() {
return new R<>(ResultCode.CLIENT_SUCCESS);
}
// 前后端分离的错误
public static <T> R<T> clientFail() {
return new R<>(ResultCode.CLIENT_FAIL);
}
public static <T> R<T> clientFail(ResultCode resultCode) {
return new R<>(resultCode);
}
public R<T> data(T data) {
this.data = data;
return this;
}
}
通用的返回状态
package com.aaa.cache.common.lang.enums;
import lombok.Getter;
@Getter
public enum ResultCode {
/**
* 响应状态码
* */
OK(200,"OK"),
CREATED(201,"新资源被创建"),
ACCEPTED(202,"已接受处理请求但尚未完成"),
NOT_AUTHORITATIVE(203,"没有授权"),
NO_CONTENT(204,"无内容"),
RESET_CONTENT(205,"内容重置"),
PARTIAL_CONTENT(206,"部分内容"),
MULTIPLE_CHOICES(300,"选择多项"),
MOVED_PERMANENTLY(301,"永久移动"),
MOVED_TEMP(302,"临时重定向"),
SEE_OTHER(303,"查看其他"),
BAD_REQUEST(400,"错误的请求"),
UNAUTHORIZED(401,"未经授权"),
NOT_FOUND(404,"找不到"),
METHOD_NOT_ALLOWED(405, "不允许的方法"),
NOT_ACCEPTABLE(406,"不能接受"),
REQUEST_TIMEOUT(408,"请求超时"),
CONFLICT(409, "发生冲突"),
PRECONDITION_FAILED(412, "前提条件失败(条件更新时的冲突)"),
UNSUPPORTED_MEDIA_TYPE(415, "不支持的媒体类型"),
INTERNAL_SERVER_ERROR(500, "内部服务器错误"),
SERVICE_UNAVAILABLE(503, "暂停服务"),
/**
* 前后端分离时的状态码以及信息
* */
CLIENT_SUCCESS(20000,"成功"),
CLIENT_FAIL(20001,"失败"),
CLIENT_USERNAME_PASSWORD(20002,"用户名或密码错误"),
CLIENT_NULL_AUTHORIZED(20003,"权限不足"),
CLIENT_FAR_FAIL(20004,"远程调用失败"),
CLIENT_REPEAT(20005,"重复操作");
private Integer code;
private String message;
private ResultCode(){}
ResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
}
通用的全局异常
package com.aaa.cache.common.lang.exception;
import com.aaa.cache.common.lang.util.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice(basePackages = "com.aaa.controller")
@Slf4j
public class GlobalException {
/**
* 自定义异常捕获
* @param e 异常
* @return 返回异常信息
*/
@ExceptionHandler(MyException.class)
public R myException(MyException e) {
e.printStackTrace();
return R.fail(e.getCode(), e.getMessage());
}
/**
* 所有的异常捕获
* @param e 异常
* @return 返回异常信息
*/
@ExceptionHandler(Exception.class)
public R exception(Exception e) {
e.printStackTrace();
return R.fail();
}
}
自定义异常
package com.aaa.cache.common.lang.exception;
import com.aaa.cache.common.lang.enums.ResultCode;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 自定义异常
*
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MyException extends RuntimeException{
private Integer code;
private String msg;
public MyException (ResultCode resultCode){
this.code=resultCode.getCode();
this.msg=resultCode.getMessage();
}
}