如何写出优雅的业务代码

接口统一响应对象返回

BaseResponse通用响应对象

package com.leesin.project.common;存放在common包下

有三个主要的字段:

  • code:一个整数,通常用于表示响应的状态码,例如200表示成功,404表示未找到资源等。
  • data:一个泛型类型T的对象,通常包含服务器返回的具体数据。
  • message:一个字符串,通常包含对响应的描述信息。

提供了三个构造函数,允许创建不同类型的BaseResponse实例。

  1. BaseResponse(int code, T data, String message):创建一个新的响应实例,同时包含代码、数据和消息。
  2. BaseResponse(int code, T data):这是一个简化版本的构造函数,它将代码设置为输入参数,数据为null,消息为空字符串。
  3. BaseResponse(ErrorCode errorCode):创建一个新的响应实例,将代码设置为errorCode的code字段,数据设置为null,消息为errorCode的message字段。
@Data
public class BaseResponse<T> implements Serializable {

    private int code;

    private T data;

    private String message;

    public BaseResponse(int code, T data, String message) {
        this.code = code;
        this.data = data;
        this.message = message;
    }

    public BaseResponse(int code, T data) {
        this(code, data, "");
    }

    public BaseResponse(ErrorCode errorCode) {
        this(errorCode.getCode(), null, errorCode.getMessage());
    }
}

ResultUtils工具类

package com.leesin.project.common;存放在common包下

是一个工具类,主要用于处理网络应用中的结果反馈。它提供了几个静态方法,这些方法返回一个BaseResponse对象,这个对象包含一个状态码(通常用于表示成功或失败),一个数据对象(如果有的话),以及一个消息。

提供了以下功能:

  1. success(T data):这个方法创建一个新的BaseResponse对象,表示成功,并返回该对象。它接受一个类型为T的数据对象作为参数。
  2. error(ErrorCode errorCode):这个方法创建一个新的BaseResponse对象,表示出错,并返回该对象。它接受一个ErrorCode对象作为参数,这个对象通常包含错误代码和描述信息。
  3. error(int code, String message):这个方法创建一个新的BaseResponse对象,表示出错,并返回该对象。它接受一个错误代码和一个消息作为参数。
  4. error(ErrorCode errorCode, String message):这个方法类似于上面的方法,但是它接受一个额外的消息参数。
public class ResultUtils {

    /**
     * 成功
     *
     * @param data
     * @param <T>
     * @return
     */
    public static <T> BaseResponse<T> success(T data) {
        return new BaseResponse<>(0, data, "ok");
    }

    /**
     * 失败
     *
     * @param errorCode
     * @return
     */
    public static BaseResponse error(ErrorCode errorCode) {
        return new BaseResponse<>(errorCode);
    }

    /**
     * 失败
     *
     * @param code
     * @param message
     * @return
     */
    public static BaseResponse error(int code, String message) {
        return new BaseResponse(code, null, message);
    }

    /**
     * 失败
     *
     * @param errorCode
     * @return
     */
    public static BaseResponse error(ErrorCode errorCode, String message) {
        return new BaseResponse(errorCode.getCode(), null, message);
    }
}

ErrorCode自定义错误码

package com.leesin.project.common;存放在common包下

public enum ErrorCode {

    SUCCESS(0, "ok"),
    PARAMS_ERROR(40000, "请求参数错误"),
    NOT_LOGIN_ERROR(40100, "未登录"),
    NO_AUTH_ERROR(40101, "无权限"),
    NOT_FOUND_ERROR(40400, "请求数据不存在"),
    FORBIDDEN_ERROR(40300, "禁止访问"),
    SYSTEM_ERROR(50000, "系统内部异常"),
    OPERATION_ERROR(50001, "操作失败");

    /**
     * 状态码
     */
    private final int code;

    /**
     * 信息
     */
    private final String message;

    ErrorCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

}

controller 层调用示例

使用ResultUtils工具类

@PostMapping("/register")
public BaseResponse<Long> userRegister(@RequestBody UserRegisterRequest userRegisterRequest) {
    if (userRegisterRequest == null) {
        throw new BusinessException(ErrorCode.PARAMS_ERROR);
    }
    String userAccount = userRegisterRequest.getUserAccount();
    String userPassword = userRegisterRequest.getUserPassword();
    String checkPassword = userRegisterRequest.getCheckPassword();
    if (StringUtils.isAnyBlank(userAccount, userPassword, checkPassword)) {
        return null;
    }
    long result = userService.userRegister(userAccount, userPassword, checkPassword);
    return ResultUtils.success(result);
}

未待完续。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值