Springboot项目返回数据统一封装,支持swagger。
正常swagger会根据数据库表的注释显示对应的参数释义等。但当我们使用统一接口返回map时,部分注释等信息会被掩盖消失。在此提供三个java类即可满足统一封装返回接口,也可显示对应的swagger释义等。
1.ErrorCode.java
package com.hng.error;
/**
* @Author: 郝南过
* @Description: TODO
* @Date: 2023/11/14 10:56
* @Version: 1.0
*/
public interface ErrorCode {
String getCode();
String getMessage();
}
2.ErrorEnum.java
package com.hng.error;
public enum ErrorEnum implements ErrorCode {
/**
* 成功
*/
SUCCESS("SUCCESS", "成功"),
//*********************系统异常*********************//
/**
* 请求失败(外域请求等)
*/
REQUEST_FAIL("REQUEST_FAIL", "请求失败"),
/**
* 系统异常
*/
SYSTEM_ERROR("SYSTEM_ERROR", "系统异常"),
/**
* 操作超时
*/
OP_TIMEOUT("OP_TIMEOUT", "操作超时,请重试"),
/**
* 操作冲突(乐观锁、并发)
*/
OP_CONFLICT("OP_CONFLICT", "操作冲突"),
/**
* 数据库执行错误
*/
DB_ERROR("DB_ERROR", "数据库执行错误"),
//*********************业务类异常*********************//
/**
* 参数错误
*/
PARAMETER_ERROR("PARAMETER_ERROR", "参数错误"),
/**
* 没有权限
*/
NO_PRIVILEGE("NO_PRIVILEGE", "没有权限"),
/**
* 数据异常(数据校验不通过等)
*/
DATA_ERROR("DATA_ERROR", "数据异常"),
/**
* 数据不存在(数据校验等)
*/
DATA_NOT_FOUND("DATA_NOT_FOUND", "数据不存在"),
/**
* 数据已存在(数据校验等)
*/
DATA_EXIST("DATA_EXIST", "数据已存在");
/**
* 结果码
*/
private String code;
/**
* 结果信息
*/
private String message;
ErrorEnum(String code, String message) {
this.code = code;
this.message = message;
}
@Override
public String getCode() {
return this.code;
}
@Override
public String getMessage() {
return this.message;
}
}
3.Result.java
package com.hng.response;
import com.fasterxml.jackson.a服务器托管网nnotation.JsonIgnore;
import com.hng.error.ErrorEnum;
import lombok.Data;
@Data
public class Result {
private String code;
private String msg;
private T data;
@JsonIgnore
public boolean getSuccess() {
return this.code.equals(ErrorEnum.SUCCESS.getCode());
}
private Result(String code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
private Result(ErrorEnum errorEnum, T data) {
this.code = errorEnum.getCode();
this.msg = errorEnum.getMessage();
this.data = data;
}
public static Result Result(ErrorEnum errorEnum, T data) {
return new Result(errorEnum, data);
}
public static Result Result(String code, String msg, T data) {
return new Result(code, msg, data);
}
}
4.controller中使用
@ResponseBody
@PostMapping("/getUser")
public Result getUserById(@Reque服务器托管网stParam Long userId){
SysUser sysUser = sysUserService.getUserById(userId);
if (Objects.isNull(sysUser)) {
return Result.Result(ErrorEnum.DATA_NOT_FOUND, null);
}
return Result.Result(ErrorEnum.SUCCESS, sysUser);
}
5.结果展示
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 「X」Embedding in NLP|一文读懂 2023 年最流行的 20 个 NLP 模型
从数据到大模型应用,11 月 25 日,杭州源创会,共享开发小技巧 在上一篇文章中,我们已经科普了什么是自然语言处理(NLP)、常见用例及其与向量数据库的结合。今天,依然是「X」Embedding in NLP 系列专题,本文为初阶第二篇,我们将深入介绍在 2…