赞
踩
为了让后端更方便的返回数据,也为了让前端去响应统一的返回体,我们需要在项目中自己创建规范的返回类,具体步骤如下所示
package com.example.springbootdemo.common.response; /** * @ClassName: IResultCode * @Description: 统一状态码接口 * @Author: WangBin * @Date: 2023/6/18 15:29 */ public interface IResultCode { /** * 获取状态码 * * @return 状态码 */ Integer getCode(); /** * 获取返回消息 * * @return 返回消息 */ String getMessage(); }
package com.example.springbootdemo.common.response; import lombok.Getter; /** * @ClassName: ResultCode * @Description: * @Author: WangBin * @Date: 2023/6/18 15:30 */ @Getter public enum ResultCode implements IResultCode{ /** * 成功 */ OK(200, "成功"), /** * 失败 */ ERROR(500, "失败"), SYSTEM_ERROR(501, "系统错误"), UNKNOWN_ERROR(502, "未知错误"), /* 参数错误:1000~1999 */ PARAM_NOT_VALID(1001, "参数无效"), PARAM_IS_BLANK(1002, "参数为空"), PARAM_TYPE_ERROR(1003, "参数类型错误"), PARAM_NOT_COMPLETE(1004, "参数缺失"), PARAM_TYPE_REPEAT(1005,"参数重复"), /* 用户错误 */ USER_NOT_LOGIN(2001, "用户未登录"), USER_ACCOUNT_EXPIRED(2002, "账号已过期"), USER_CREDENTIALS_ERROR(2003, "密码错误"), USER_CREDENTIALS_EXPIRED(2004, "密码过期"), USER_ACCOUNT_DISABLE(2005, "账号不可用"), USER_ACCOUNT_LOCKED(2006, "账号被锁定"), USER_ACCOUNT_NOT_EXIST(2007, "账号不存在"), USER_ACCOUNT_NOT_NULL(2013, "账号不能为空"), USER_CREDENTIALS_NOT_NULL(2014, "密码不能为空"), USER_ACCOUNT_ALREADY_EXIST(2008, "账号已存在"), USER_ACCOUNT_USE_BY_OTHERS(2009, "账号下线"), PASSWORD_SAME(2010, "新密码与原密码一致"), ACCOUNT_OR_PASSWORD_NOT_NULL(2016, "账号或者密码不能为空"), /* token错误 */ TOKEN_IS_NULL(2011, "token不能为空"), TOKEN_INVALID(2012, "token失效"), TOKEN_ERROR(2015, "token错误"), /* 业务错误 */ NO_PERMISSION(3001, "没有权限"), ADD_FAIL(3002, "新增失败"), UPDATE_FAIL(3003, "更新失败"), DELETE_FAIL(3004, "删除失败"), QUERY_FAIL(3005, "查询失败"), QUERY_EMPTY(3006, "查询为空"), QUERY_NOT_EXIST(3007, "查询不存在"), EMAIL_ERROR(2060, "邮箱格式错误"), PHONE_ERROR(2061, "电话格式错误"), EMAIL_REPEAT_ERROR(2062, "邮箱已存在"), /* 文件读写 */ FILE_IS_NULL(2041, "文件为空"), FILE_WRONG_FORMAT(2042, "文件格式错误"), FILE_CHUNK_UPLOAD_ERROR(2043, "文件分块上传失败!"), FILE_CHUNK_MERGE_ERROR(2044, "文件分块合并失败"), FILE_CONTENT_ERROR(2045, "上传文件内容错误"), /** 数据导出 */ EXPORT_FAILURE(2100, "导出失败"), /** 数据导入 */ IMPORT_FAILURE(2101,"导入失败"); /** * 返回码 */ private Integer code; /** * 返回消息 */ private String message; ResultCode(Integer code, String message) { this.code = code; this.message = message; } }
package com.example.springbootdemo.common.response; //import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; /** * 统一API对象返回 * @param <T> * @Author: TanXJ * @Date: 2021/10/13 9:31 */ @Data @NoArgsConstructor public class ResultBean<T> { /** 状态码 */ private Integer code; /** 返回消息 */ private String message; /** 状态 */ private boolean status; /** 返回数据 */ private T data; public ResultBean(Integer code, String message, boolean status, T data) { this.code = code; this.message = message; this.status = status; this.data = data; } public ResultBean(ResultCode resultCode, boolean status, T data) { this.code = resultCode.getCode(); this.message = resultCode.getMessage(); this.status = status; this.data = data; } public ResultBean(ResultCode resultCode, boolean status) { this.code = resultCode.getCode(); this.message = resultCode.getMessage(); this.status = status; this.data = null; } public static <T> ResultBean success() { return new ResultBean<>(ResultCode.OK, true); } public static <T> ResultBean message(String message) { return new ResultBean<>(ResultCode.OK.getCode(), message, true, null); } public static <T> ResultBean success(T data) { return new ResultBean<>(ResultCode.OK, true, data); } public static <T> ResultBean fail() { return new ResultBean<>(ResultCode.ERROR, false); } public static <T> ResultBean fail(ResultCode resultCode) { return new ResultBean<>(resultCode, false); } public static <T> ResultBean fail(Integer code, String message) { return new ResultBean<>(code, message, false, null); } public static <T> ResultBean fail(ResultCode resultCode, T data) { return new ResultBean<>(resultCode, false, data); } public static <T> ResultBean fail(Integer code, String message, T data) { return new ResultBean<>(code, message, false, data); } }
package com.example.springbootdemo.controller; import com.example.springbootdemo.common.response.ResultBean; import com.example.springbootdemo.common.response.ResultCode; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @ClassName: TestController * @Description: * @Author: WangBin * @Date: 2023/6/17 19:38 */ @RestController public class TestController { @RequestMapping("/") public String test() { System.out.println("请求成功"); return "请求成功"; } @RequestMapping("/test1") public ResultBean test1(){ // return ResultBean.success(); // 这是返回接口响应成功,不返回任何消息 // return ResultBean.success("响应成功!"); // 接口响应成功后返回字符串 // return ResultBean.success(data); // 接口响应成功后返回数据 // return ResultBean.fail(ResultCode.ERROR); // 接口响应失败后返回枚举 return ResultBean.fail(999,"自定义错误"); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。