统一接口返回的 标准格式 R类


由于

  • 每个开发者,对自己的代码都有一套自己的逻辑和哲学,返回值就千变万化。
  • 带来的问题很明显,接口的调用者,就开始尝试一个错觉或者不明确的想象。

从而统一返回结构的格式-封装统一返回的R类。

这个方式是参考,springmvc提供的ResponseEntity和HttpStatus一个枚举类而设计的,之所以不用自带的,因为可能不太满足开发需要,所以自定义了一个。

实现统一返回格式

第一步,我们需要定义一个R类,来确定返回的格式,成功就一种情况,但是失败有很多情况,所以此时就需要第二步,定义一个枚举类,来统一管理错误的code和message。

第一步 定义R类

package com.kuangstudy.common;

/**
 * @description:
 * @author: xuke
 * @time: 2021/6/23 21:47
 */

import lombok.Data;

@Data
public class R {

    // 返回的编号
    private Integer code;
    // 返回的数据,数据类型N中,
    private Object data;
    // 返回的信息
    private String message;

    private R() {

    }

    /**
     * @Description 成功返回
     **/
    public static R success(Object data, String message) {
        R r = new R();
        r.setCode(ResponseEnum.SUCCESS.getCode());
        r.setData(data);
        r.setMessage(message == null ? ResponseEnum.SUCCESS.getMessage() : message);
        return r;
    }

    /**
     * @Description 成功返回
     **/
    public static R success(Object data) {
        return success(data, null);
    }


    /**
     * @Param [code 失败的状态, message 失败的原因]
     **/
    public static R fail(Integer code, String message) {
        R r = new R();
        r.setCode(code);
        r.setData(null);
        r.setMessage(message);
        return r;
    }

    /**
     * @Param [code 失败的状态, message 失败的原因]
     **/
    public static R fail(ResponseEnum responseEnum) {
        R r = new R();
        r.setCode(responseEnum.getCode());
        r.setData(null);
        r.setMessage(responseEnum.getMessage());
        return r;
    }
}

第二步 定义错误枚举

package com.kuangstudy.common;

/**
 * @description: 统一返回的常量类
 * 对内修改开放,对外修改关闭---枚举
 * @author: xuke
 * @time: 2021/6/23 22:12
 */
public enum ResponseEnum {

    SUCCESS(200,"成功!"),

    USER_REG_USER_PASSWORD_CODE(401,"用户名和密码错误"),
    USER_REG_USER_PASSWORD_CONFIRM(402,"密码和确认密码不一致"),
    ORDER_FAIL(601,"订单失败"),
    ORDER_MESSAGE_FAIL(602,"订单发送消息失败") ;

    private Integer code;
    private String message;

    ResponseEnum(Integer code,String mesage){
        this.code = code;
        this.message =mesage;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

测试


    /**
     * @return java.lang.String
     * @Author xuke
     * @Description 用户注册
     * @Date 20:11 2021/6/23
     * @Param []
     **/
    @GetMapping("/reg2")
    public R reguser2(Integer flag) {
        if (flag.equals(1)) {
            return R.fail(ResponseEnum.USER_REG_USER_PASSWORD_CODE);
        }
        if (flag.equals(2)) {
            return R.fail(ResponseEnum.USER_REG_USER_PASSWORD_CONFIRM);
        }
        // 1: 注册用户 10ms
        log.info("新用户注册");
        //userService.save(user);

        // 2: 发送短信 5s
        log.info("发送短信");
        regService.sendMsg();

        // 3: 添加积分 5s
        log.info("添加积分");
        regService.addScore();

        return R.success("ok");
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LC超人在良家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值