统一返回结果

mac2026-06-04  6

统一返回数据结果

项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致、轻松。 一般情况下,统一返回数据格式没有固定的格式,只要能描述清楚返回的数据状态以及要返回的具体数据就可以。但是一般会包含状态码、返回消息、数据这几部分内容 例如,我们的系统要求返回的基本数据格式如下:

列表:

{ "success": true, "code": 20000, "message": "成功", "data": { "items": [ { "id": "1", "name": "刘德华", "intro": "毕业于师范大学数学系,热爱教育事业,执教数学思维6年有余" } ] } }

分页:

{ "success": true, "code": 20000, "message": "成功", "data": { "total": 17, "rows": [ { "id": "1", "name": "刘德华", "intro": "毕业于师范大学数学系,热爱教育事业,执教数学思维6年有余" } ] } }

没有返回数据:

{ "success": true, "code": 20000, "message": "成功", "data": {} }

失败:

{ "success": false, "code": 20001, "message": "失败", "data": {} }

因此,我们定义统一结果:

{ "success": 布尔, //响应是否成功 "code": 数字, //响应码 "message": 字符串, //返回消息 "data": HashMap //返回数据,放在键值对中 }

编码简单实现

简单返回结果状态码

package com.njau.edu.common; /** * @author 张文军 * @Description: TODO: 简单返回结果状态码 * @Company:南京农业大学工学院 * @version:1.0 * @date 2019/11/213:36 */ public interface ResultCode { /** * 成功状态码 */ int SUCCESS = 2000; /** * 失败状态码 */ int ERROR = 2001; /** * 无操作权限 */ int AUTH = 3000; }

全局统一返回结果:

package com.njau.edu.common; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.HashMap; import java.util.Map; /** * @author 张文军 * @Description: TODO:统一返回结果数据格式 * @Company:南京农业大学工学院 * @version:1.0 * @date 2019/11/213:43 */ @Data @ApiModel(value = "全局统一返回结果") public class R { @ApiModelProperty(value = "是否成功") private Boolean success; @ApiModelProperty(value = "返回码") private Integer code; @ApiModelProperty(value = "返回消息") private String message; @ApiModelProperty(value = "返回数据") private Map<String, Object> data = new HashMap<String, Object>(); private R(){} public static R ok(){ R r = new R(); r.setSuccess(true); r.setCode(ResultCode.SUCCESS); r.setMessage("操作成功!"); return r; } public static R error(){ R r = new R(); r.setSuccess(false); r.setCode(ResultCode.ERROR); r.setMessage("操作失败!"); return r; } public R success(Boolean success){ this.setSuccess(success); return this; } public R message(String message){ this.setMessage(message); return this; } public R code(Integer code){ this.setCode(code); return this; } public R data(String key, Object value){ this.data.put(key, value); return this; } public R data(Map<String, Object> map){ this.setData(map); return this; } }
最新回复(0)