springboot中后端返回数据给前端的设计模式
后端数据都是以json的形式给前端返回,一般都是通过@ResponseBody来进行返回.每次返回都要重新格式化一下json的格式.如果接受请求的方法多了,那么这种返回方式无疑是效率很低的.那么就需要一个类来吧这些返回的格式统一管理起来.
可以定义一个Result类,用来专门管理返回数据的:
@Data
public class Result<T> {
private int code; //返回状态码
private String msg; //返回的message
private T data; //返回的数据
private Result(T data) {
this.code = 0;
this.msg = "success";
this.data = data;
}
private Result(CodeMsg msg) {
if (msg == null) {
return;
}
this.code = msg.getCode();
this.msg = msg.getMsg();
}
/**
* 失败的时候调用
*/
public static <T> Result<T> error(CodeMsg msg) {
return new Result<T>(msg);
}
/**
*成功的时候调用
*/
public static <T> Result<T> success(T data) {
return new Result<T>(data);
}
}
其中CodeMsg封装了具体的错误信息:
@Data
public class CodeMsg {
private int code;
private String msg;
private CodeMsg(int code, String msg) {
this.code = code;
this.msg = msg;
}
public CodeMsg fillArgs(Object... args) { //带自定义格式化参数的错误信息
int code = this.code;
String message = String.format(this.msg, args);
return new CodeMsg(code,message);
}
/**
* 通用异常
*/
public static CodeMsg SUCCESS = new CodeMsg(0, "SUCESS");
public static CodeMsg SERVER_ERROR = new CodeMsg(500100, "服务端异常");
public static CodeMsg BIND_ERROR = new CodeMsg(500101, "参数校验异常:%s");
/**
* 登录模块5002XX
*/
public static final CodeMsg PASSWORD_EMPTY = new CodeMsg(500211, "密码不能为空");
public static final CodeMsg MOBILE_EMPTY = new CodeMsg(500211, "手机号不能为空");
public static final CodeMsg MOBILE_ERROR = new CodeMsg(500211, "手机号格式错误");
public static final CodeMsg USER_NOT_EXITS = new CodeMsg(500211, "用户不存在");
public static final CodeMsg PASSWORD_ERROR = new CodeMsg(500211, "密码错误");
}
这样在后端返回的时候,只需要给定CodeMsg里面的静态常量就可以了.根据自己需要进行定义.
return Result.success(true);
return Result.error(CodeMsg.SERVER_ERROR)
和所有以梦为马的诗人一样,随处可栖--
标签:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具