统一返回对象Result
统一返回对象Result
项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致、轻松。
一般情况下,统一返回数据格式没有固定的格式,只要能描述清楚返回的数据状态以及要返回的具体数据就可以。但是一般会包含状态码、返回消息、数据这几部分内容
例如,我们的系统要求返回的基本数据格式如下:
列表:**
{ "code": 200, "message": "成功", "data": [ { "id": 2, "roleName": "系统管理员" } ], "ok": true }
分页:
{ "code": 200, "message": "成功", "data": { "records": [ { "id": 2, "roleName": "系统管理员" }, { "id": 3, "name": "普通管理员" } ], "total": 10, "size": 3, "current": 1, "orders": [], "hitCount": false, "searchCount": true, "pages": 2 }, "ok": true }
没有返回数据:
{ "code": 200, "message": "成功", "data": null, "ok": true }
失败:
{ "code": 201, "message": "失败", "data": null, "ok": false }
package org.pp.common.result; import lombok.Data; import org.pp.common.enums.ResultCodeEnum; /** * 全局统一返回结果类 * */ @Data public class Result<T> { //返回码 private Integer code; //返回消息 private String message; //返回数据 private T data; public Result(){} // 返回数据 protected static <T> Result<T> build(T data) { Result<T> result = new Result<T>(); if (data != null) { result.setData(data); } return result; } public static <T> Result<T> build(T body, Integer code, String message) { Result<T> result = build(body); result.setCode(code); result.setMessage(message); return result; } public static <T> Result<T> build(T body, ResultCodeEnum resultCodeEnum) { Result<T> result = build(body); result.setCode(resultCodeEnum.getCode()); result.setMessage(resultCodeEnum.getMessage()); return result; } public static<T> Result<T> ok(){ return Result.ok(null); } /** * 操作成功 * @param data baseCategory1List * @param <T> * @return */ public static<T> Result<T> ok(T data){ Result<T> result = build(data); return build(data, ResultCodeEnum.SUCCESS); } public static<T> Result<T> fail(){ return Result.fail(null); } /** * 操作失败 * @param data * @param <T> * @return */ public static<T> Result<T> fail(T data){ Result<T> result = build(data); return build(data, ResultCodeEnum.FAIL); } public Result<T> message(String msg){ this.setMessage(msg); return this; } public Result<T> code(Integer code){ this.setCode(code); return this; } }
返回对象状态码
package org.pp.common.enums; import lombok.Getter; /** * 统一返回结果状态信息类 * */ @Getter public enum ResultCodeEnum { SUCCESS(200,"成功"), FAIL(201, "失败"), SERVICE_ERROR(2012, "服务异常"), DATA_ERROR(204, "数据异常"), ILLEGAL_REQUEST(205, "非法请求"), REPEAT_SUBMIT(206, "重复提交"), ARGUMENT_VALID_ERROR(210, "参数校验异常"), LOGIN_AUTH(208, "未登陆"), PERMISSION(209, "没有权限"), ACCOUNT_ERROR(214, "账号不正确"), PASSWORD_ERROR(215, "密码不正确"), LOGIN_MOBLE_ERROR( 216, "账号不正确"), ACCOUNT_STOP( 217, "账号已停用"), NODE_ERROR( 218, "该节点下有子节点,不可以删除") ; private Integer code; private String message; private ResultCodeEnum(Integer code, String message) { this.code = code; this.message = message; } }
改造Controller方法
@GetMapping("findAll") public Result<List<SysRole>> findAll() { List<SysRole> roleList = sysRoleService.list(); return Result.ok(roleList); }
posted on 2023-02-22 14:17 JavaCoderPan 阅读(118) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)