1. 定义通用返回结果类
定义ResultVO类,作返回给前端的对象结构,主要有4个字段
- code : 错误码
- data : 内容
- message : 消息
- description : 具体描述
import lombok.Data;
import java.io.Serializable;/*** 通用返回结果类* @param <T>*/
@Data
public 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)的统一。