1. 定义通用返回后果类
定义ResultVO类,作返回给前端的对象构造,次要有4个字段
- code : 错误码
- data : 内容
- message : 音讯
- description : 具体形容
import lombok.Data;import java.io.Serializable;/** * 通用返回后果类 * @param <T> */@Datapublic class ResultVO<T> implements Serializable { /** * 错误码 */ private int code; /** * 内容 */ private T data; /** * 音讯 */ private String message; /** * 形容 */ private String description; public ResultVO(int code, T data, String message, String description) { this.code = code; this.data = data; this.message = message; this.description = description; } public ResultVO(int code, T data) { this(code,data,"",""); } public ResultVO(int code, T data, String message) { this(code,data,message,""); } }
2 工具类
/** * 通用返回响应工具类 * * @author leovany * @date 2023/09/23 */public class ResultUtils { /** * 胜利 * * @param data 数据 * @return {@link ResultVO}<{@link T}> */ public static <T> ResultVO<T> success(T data) { return new ResultVO<T>(0, data, "success"); } /** * 谬误 * * @param code 错误码 * @param message 信息 * @param description 形容 * @return {@link ResultVO} */ public static ResultVO error(int code, String message, String description) { return new ResultVO<>(code, null, message, description); }}
3 应用
- 返回值用
ResultVO<XXX>
封装 - 胜利返回:
ResultUtils.success(XX);
- 失败失败:
ResultUtils.error(code,message,description);
@PostMapping("/login")public ResultVO<User> userLogin(@RequestBody UserLoginRequest userLoginRequest, HttpServletRequest request) { String userAccount = userLoginRequest.getUserAccount(); String userPassword = userLoginRequest.getUserPassword(); // 参数校验 if (StringUtils.isAnyBlank(userAccount, userPassword)) { return ResultUtils.error(40000,"参数谬误","参数不能为空"); } // 从数据库查找用户 User user = userService.doLogin(userAccount, userPassword, request); return ResultUtils.success(user);}
跟之前比照,代码更加优雅
4 返回给前端效果图
返回给前端的响应后果
{ "code": 0, "data": { "id": 10, "username": "admin" }, "message": "success", "description": ""}
- 胜利
- 失败
总结
通过封装ResultVO
通用返回后果对象之后,保障了后端跟前端视图对象(VO)的对立。