JAVAWEB统一返回格式Result类、R类
Result.java
public class Result<T> { private Integer code; private String msg; private String message; private T data; public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } 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; } public Result ok(T t){ this.setCode(1000); this.setMsg("成功"); this.setMessage("成功"); this.setData(t); return this; } public Result fail(String msg){ this.setCode(1001); this.setMsg(msg); this.setMessage(msg); return this; } public Result() { } public Result(Integer code, String msg) { this.code = code; this.msg = msg; this.setMessage(msg); } public Result(Integer code, String msg, T data) { this.code = code; this.msg = msg; this.data = data; this.setMessage(msg); } }
使用
new Result<>().fail("缺少参数"); new Result<>().ok(data);
可以使用另一个
引入maven
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
R.java
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.serializer.SerializerFeature; import lombok.Data; import java.io.Serializable; @Data public class R<M> implements Serializable { // 返回状态【0-成功,1-业务失败,999-表示系统异常】 @JSONField(ordinal = 1) private int code; // 返回信息 @JSONField(ordinal = 2) private String message; // 返回数据实体; @JSONField(ordinal = 3,serialzeFeatures = {SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty}) private M data; private R(){} public static<M> R success(M m){ R r = new R(); r.setCode(0); r.setMessage("success"); r.setData(m); return r; } public static R successData(String data){ R r = new R(); r.setCode(0); r.setMessage("success"); r.setData(data); return r; } public static<M> R success(){ R r = new R(); r.setCode(0); r.setMessage("success"); return r; } public static<M> R success(String msg){ R r = new R(); r.setCode(0); r.setMessage(msg); return r; } public static<M> R serviceFail(String msg){ R r = new R(); r.setCode(1); r.setMessage(msg); return r; } public static<M> R appFail(String msg){ R r = new R(); r.setCode(999); r.setMessage(msg); return r; } public static<M> R error(int code,String msg){ R r = new R(); r.setCode(code); r.setMessage(msg); return r; } public static<M> R serviceFail(){ R r = new R(); r.setCode(1); r.setMessage("系统异常"); return r; } }
ApiResult.java
import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.experimental.Accessors; import org.apache.commons.lang3.StringUtils; import java.io.Serializable; import java.util.Date; import java.util.HashMap; import java.util.Map; @Data @Accessors(chain = true) @Builder @AllArgsConstructor public class ApiResult<T> implements Serializable { private int code; private T data; private String msg; @JSONField(format = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date time; public ApiResult() { } public static ApiResult result(boolean flag){ if (flag){ return ok(); } return fail(""); } public static ApiResult result(ApiCode apiCode){ return result(apiCode,null); } public static ApiResult result(ApiCode apiCode,Object data){ return result(apiCode,null,data); } public static ApiResult result(ApiCode apiCode,String msg,Object data){ String message = apiCode.getMsg(); if (StringUtils.isNotBlank(msg)){ message = msg; } return ApiResult.builder() .code(apiCode.getCode()) .msg(message) .data(data) .time(new Date()) .build(); } public static ApiResult ok(){ return ok(null); } public static ApiResult ok(Object data){ return result(ApiCode.SUCCESS,data); } public static ApiResult ok(String key,Object value){ Map<String,Object> map = new HashMap<>(); map.put(key,value); return ok(map); } public static ApiResult fail(ApiCode apiCode){ return result(apiCode,null); } public static ApiResult fail(String msg){ return result(ApiCode.FAIL,msg,null); } public static ApiResult fail(ApiCode apiCode,Object data){ if (ApiCode.SUCCESS == apiCode){ throw new RuntimeException("失败结果状态码不能为" + ApiCode.SUCCESS.getCode()); } return result(apiCode,data); } public static ApiResult fail(String key,Object value){ Map<String,Object> map = new HashMap<>(); map.put(key,value); return result(ApiCode.FAIL,map); } }
常用返回API状态码
ApiCode.java
public enum ApiCode { SUCCESS(200, "操作成功"), UNAUTHORIZED(401, "非法访问"), NOT_PERMISSION(403, "没有权限"), NOT_FOUND(404, "你请求的路径不存在"), FAIL(500, "操作失败"), SYSTEM_EXCEPTION(5000,"系统异常!"), PARAMETER_EXCEPTION(5001,"请求参数校验异常"), PARAMETER_PARSE_EXCEPTION(5002,"请求参数解析异常"), HTTP_MEDIA_TYPE_EXCEPTION(5003,"HTTP Media 类型异常"), SYSTEM_LOGIN_EXCEPTION(5005,"系统登录异常"), ERROR_AUTH(201,"用户名或密码错误"), NEED_PARAM(202,"缺少参数"), OLD_PWD_ERROR(203,"旧密码输入错误"), ; private final int code; private final String msg; ApiCode(final int code, final String msg) { this.code = code; this.msg = msg; } public static ApiCode getApiCode(int code) { ApiCode[] ecs = ApiCode.values(); for (ApiCode ec : ecs) { if (ec.getCode() == code) { return ec; } } return SUCCESS; } public int getCode() { return code; } public String getMsg() { return msg; } }
-----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------
(蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了