R类统一封装返回结构

      上周看了下Java统一返回R类的相关知识点,今天呢,已经下班了,正好没啥事就来给大家来整理下这方面知识文章,希望能在编程的世界中助大家一臂之力,老规矩,废话上说,开始干吧。

1、为什么使用统一封装R类

      在项目中,尤其是多人开发的项目中,如果不进行统一封装数据返回,没有固定格式返回,你可以想象一下前端在对接口绑定的时候,前端那个头大啊。因此在开发时,一般会返回统一格式,封装成固定格式JSON,这样前端在绑定接口时,就能很能清楚的描述返回数据状态和返回的具体数据就可以。一般返回数据中包含状态码、返回信息和数据。

2、统一返回数据格式

{
    "code":数字, //响应码
    "message":字符串,//返回状态消息
    "data":T泛型,//返回数据
}

3、创建统一结果返回类

      3.1、创建接口返回定义状态码和状态 消息

            状态码和消息可以直接写入,也可以采用枚举来进行定义,这里我才用枚举方法,代码实例如下所示:

      ResponseConstantEnum枚举类:

package com.ygl.test02.constant;

import lombok.Data;
import lombok.Getter;

/**
 * 返回编码枚举类
 *
 * @author yan
 * @version 1.0
 * @date 2021/7/20 17:23
 */
@Getter
public enum ResponseConstantEnum {

    /**
     * 操作成功
     */
    SUCCESS(200,"操作成功"),

    /**
     * 错误请求
     */
    ERROR(400,"错误请求"),

    /**
     * 请求页面未找到
     */
    NOTFINDERROR(404,"请求页面未找到"),

    /**
     * 系统异常
     */
    SYSERROR(-1, "系统异常");

    //请求响应码
    private final Integer resultCode;

    //请求响应消息
    private final String resultMessage;

    ResponseConstantEnum(Integer resultCode, String resultMessage) {

        this.resultCode = resultCode;
        this.resultMessage = resultMessage;
    }

    public static ResponseConstantEnum get(Integer code) {
        //value()方法可以将枚举类转变为一个枚举类型的数组
        for (ResponseConstantEnum responseConstantEnum : ResponseConstantEnum.values()) {
            if (code == responseConstantEnum.getResultCode()) {
                return responseConstantEnum;
            }
        }
        return ResponseConstantEnum.ERROR;
    }

}

      上面只写了部分常用的状态码和状态消息,大家可以根据自身需要来继续添加其状态码和消息。

      3.2、创建返回结果R类

      Response代码如下所示:

package com.ygl.test02.util;

import lombok.Data;

import com.ygl.test02.constant.ResponseConstantEnum;

/**
 * TODO
 * R类封装返回工具类
 *
 * @author ygl
 * @version V1.0
 * @since 2021-07-20 17:16
 **/
@Data
public class Response<T> {

    private static final long serialVersionUID = 1L;

    //响应码
    private Integer code;

    //返回消息
    private String message;

    //返回数据
    private T data;


    /**
     * 操作成功ok方法
     */
    public static <T> Response<T> ok(T data) {

        Response<T> response = new Response();
        response.setCode(ResponseConstantEnum.SUCCESS.getResultCode());
        response.setMessage(ResponseConstantEnum.SUCCESS.getResultMessage());
        response.setData(data);
        return response;
    }

    /**
     * 编译失败方法
     */
    public static Response buildFailure(Integer errCode, String errMessage){

        Response response = new Response();
        response.setCode(errCode);
        response.setMessage(errMessage);
        return response;
    }

}

      上面R类中我只写了两个方法,分别是操作成功返回方法和编译失败返回的方法,同样大家可以根据自己的需求来进行方法重写和添加方法。

      3.3、项目结构

image-20210728111640874

4、R类使用

@RestController
@RequestMapping("/test")
@ConfigurationProperties(prefix = "urls")
@Data
public class TestController {
    
    /**
    * 测试使用R类统一返回
    * TODO 
     * @param 
    * @return null
    * @author ygl
    * @date 2021/7/28 11:20
    **/
    @GetMapping("/testResponse")
    public Response<List<People>> testResponse(){

        People people1 = new People();
        people1.setName("ygl");
        people1.setAddress("中国 台湾");
        people1.setAge(25);
        List<People> peopleArrayList = new ArrayList<>();
        peopleArrayList.add(people1);
        //编译失败返回
        //return Response.buildFailure(500,"编译出错");

        //运行成功返回,调用ok()方法
        return Response.ok(peopleArrayList);
    }
    
}

      好了,R类的分享就到这里了,大家有那些不太懂或者我的分享中有出错的地方,希望大家在评论中指出。

      一键三联哦,拜拜~~~~下期见

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

岭岭颖颖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值