后端优化之定义通用返回对象

介绍

为什么要做通用返回对象?


后端直接返回一个对象给前端,如果这个数据出问题了、后端处理报错了、查不到用户,前端如果不刻意区分的话,也不知道它到底为什么报错。比如说一个测试,它返回了一个有六项的列表,假如后台返回一个空数组,前端可能也不会意识到它是错误的,如果说后台因为一些异常,我们强制给他返回空数组,但前端可能不知道对不对,他还以为这个只是一个本来就是数据库里没有用户的一个值。

所以我们需要定义一个通用的返回对象。

通用返回类

通用返回类一般会定义各种返回状态,一般的通用返回类都至少要有返回状态码(code),返回数据(data),状态码信息(message)这三个属性,其他属性可以根据自己需求去定义。

package com.liqi.usercenters.common;

import lombok.Data;

import java.io.Serializable;

/**
 * 通用返回类
 * @param <T>
 */
@Data
public class BaseResponse<T> implements Serializable {
    /**
     * 状态码
     */
    private int code;

    /**
     * 数据
     */
    private T data;

    /**
     * 状态码信息
     */
    private String message;

    /**
     * 状态码描述(详情)
     */
    private String description;

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

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

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

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

}

调用

通用返回类定义好了,那么怎么使用呢?其实很简单,看看下面的例子吧~

 @PostMapping("/login")
    public BaseResponse<User> userLogin(@RequestBody UserLoginRequest userLoginRequest, HttpServletRequest request) {
        if (userLoginRequest == null) {
            throw new BusinessException(ErrorCode.NULL_ERROR);

        }
        String userAccount = userLoginRequest.getUserAccount();
        String userPassword = userLoginRequest.getUserPassword();
        log.info(userAccount);
        log.info(userPassword);
        if (StringUtils.isAnyBlank(userAccount, userPassword)) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR);
        }
        User user = userService.userLogin(userAccount, userPassword, request);
        if (user == null) {
            return ResultUtil.error(ErrorCode.PARAMS_ERROR);
        }
        return ResultUtil.success(user);
    }

总结:我们只需要将接口的返回类型从原来的User修改为刚刚定义的通用返回类型BaseResponse即可

效果

我们打开接口测试界面,可以看到,数据已经按照通用类的格式返回了。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值