用于Springboot项目中,控制层返回给前端的JSON格式的通用结果公共类CommonResult
这里收集一些自己需要使用到的公共(common)类或工具(util)类。前后端分离后,Springboot专注于后端,用户发出请求,Springboot返回JSON格式的数据给前端。JSON格式的数据应该包括返回码,提示信息,还有数据。基本上每个web项目都需要,所以,实现返回的JSON格式数据的作为公共类。主要包括二个类和一个接口IErrorCode接口ResultCode类CommonResu
·
这里收集一些自己需要使用到的公共(common)类或工具(util)类。
前后端分离后,Springboot专注于后端,用户发出请求,Springboot返回JSON格式的数据给前端。
JSON格式的数据应该包括返回码,提示信息,还有数据。
基本上每个web项目都需要,所以,实现返回的JSON格式数据的作为公共类。
主要包括二个类和一个接口
- IErrorCode接口
- ResultCode类
- CommonResult类
IErrorCode接口
封装API的错误码
代码:
public interface IErrorCode {
long getCode();
String getMessage();
}
ResultCode类
枚举了一些常用API操作码
public enum ResultCode implements IErrorCode {
SUCCESS(200, "操作成功"),
FAILED(500, "操作失败"),
VALIDATE_FAILED(404, "参数检验失败"),
UNAUTHORIZED(401, "暂未登录或token已经过期"),
FORBIDDEN(403, "没有相关权限");
private long code;
private String message;
private ResultCode(long code, String message) {
this.code = code;
this.message = message;
}
@Override
public long getCode() {
return code;
}
@Override
public String getMessage() {
return message;
}
}
CommonResult类
做为控制层的通用返回对象
public class CommonResult<T> {
private long code;
private String message;
private T data; //范型
protected CommonResult() {
}
protected CommonResult(long code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
/**
* 成功返回结果
*
* @param data 获取的数据
*/
public static <T> CommonResult<T> success(T data) {
return new CommonResult<T>(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), data);
}
/**
* 成功返回结果
*
* @param data 获取的数据
* @param message 提示信息
*/
public static <T> CommonResult<T> success(T data, String message) {
return new CommonResult<T>(ResultCode.SUCCESS.getCode(), message, data);
}
/**
* 失败返回结果
* @param errorCode 错误码
*/
public static <T> CommonResult<T> failed(IErrorCode errorCode) {
return new CommonResult<T>(errorCode.getCode(), errorCode.getMessage(), null);
}
/**
* 失败返回结果
* @param message 提示信息
*/
public static <T> CommonResult<T> failed(String message) {
return new CommonResult<T>(ResultCode.FAILED.getCode(), message, null);
}
/**
* 失败返回结果
*/
public static <T> CommonResult<T> failed() {
return failed(ResultCode.FAILED); //ResultCode 枚举操作码
}
/**
* 参数验证失败返回结果
*/
public static <T> CommonResult<T> validateFailed() {
return failed(ResultCode.VALIDATE_FAILED);
}
/**
* 参数验证失败返回结果
* @param message 提示信息
*/
public static <T> CommonResult<T> validateFailed(String message) {
return new CommonResult<T>(ResultCode.VALIDATE_FAILED.getCode(), message, null);
}
/**
* 未登录返回结果
*/
public static <T> CommonResult<T> unauthorized(T data) {
return new CommonResult<T>(ResultCode.UNAUTHORIZED.getCode(), ResultCode.UNAUTHORIZED.getMessage(), data);
}
/**
* 未授权返回结果
*/
public static <T> CommonResult<T> forbidden(T data) {
return new CommonResult<T>(ResultCode.FORBIDDEN.getCode(), ResultCode.FORBIDDEN.getMessage(), data);
}
public long getCode() {
return code;
}
public void setCode(long code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
使用方法
在控制层要返回JSON对象时,可以直接返回CommonResult<T>
类型。在控制器处理方法中可以直接使用CommonResult类的若干静态方法来得到包装了data后的CommonResult对象。如下例,我是要返回一个School对象。
@RestController
public class SchoolController {
@Resource
private SchoolService schoolService;
@RequestMapping("/school/{id}")
public CommonResult<School> getSchoolById(@PathVariable long id){
return CommonResult.success(schoolService.getSchoolById(id));
}
}
返回的数据为
code: 200
data: {
gmtCreate: "2021-11-05T15:52:40.000+00:00"
gmtModified: "2021-11-05T15:52:40.000+00:00"
id: 2
isDelete: 0
name: "湖南大学"
}
message: "操作成功"
更多推荐
已为社区贡献2条内容
所有评论(0)