瑞吉外卖返回通用结果类R-自学笔记

通用结果类是什么?

在看别人的项目的时候会发现,他们的项目后端返回值是R或者是一些没有听说过的字母或者是单词,这些通常是自己或是公司开发定义的一个类,即通用结果类,这类中封装了一些属性和方法,这个类中通常包含的属性有:

private Boolean success 表示请求是否成功
private Integer code 请求的响应码
private String message 返回信息
private Map<String, Object> data = new HashMap<String, Object>() 返回的数据
使用这些属性可以表示出一个请求的状态和请求所想传递的信息。
习惯将R放在一公共包或者公共的项目中,因为其他项目都大概率需要使用到R,公共属性直接调用即可。

通用结果类的特征

  1. 该类里面的属性是私有的,即属性是受到保护的不能随意访问
  2. 构造器私有化,为了不让其他类new这个对象,即只能自己new自己
  3. 大部分方法是静态方法,为了可以直接使用类名.方法名的方式调用方法
  4. 每个方法的返回值都是这个类自己,即为了链式调用。java1.8新特性

为什么使用通用结果类

  1. 在大型的项目需要编写很多Controller,其中的方法有很多,几乎都是响应客户端发送来的请求,Controller处理完会返回给页面一个结果,所以就把这个结果统一的封装成一个类R,此类是一个通用结果类,服务端响应的所有结果最终都会包装成此种类型返回给前端页面.
  2. 如果不使用通用结果类,则需要不断的写重复的返回结果,而且每个人写的返回结果不一定时相同的,这就给团队合作带来了不便,比如小王返回的的结果为 success,而小李返回的是true,其他人的结果更是有无限种可能,那么前端在接收不同人员的结果时就会很头疼,分不清到底哪个才是成功,哪个才是失败,而通用结果类则可以完美的解决此问题。

代码实现

/**
 * 通用返回结果,服务端响应的数据最终都会封装成此对象
 * @param <T>
 */
@Data
public class R<T> {
    private Integer code;       //编码:1成功,0和其它数字为失败
    private String msg;         //错误信息
    private T data;             //数据
    private Map map = new HashMap();   //动态数据
 
    public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.code = 1;
        return r;
    }
    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.code = 0;
        return r;
    }
    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }
}

解析:

code: 实际上就是和前端约定好的状态码。

常常200表示成功 400表示执行失败。这里使用1成功,0和其它数字为失败。

例如在success() 中设置code = 1,error()则code = 0

msg:错误信息,在使用error函数中常常设置错误信息返回给前端

data:访问成功时,返回的数据信息。使用了泛型可以根据不同情况,返回不同类型的数据。

在访问成功又不需要返回数据的情况可以将T设置为String类型,然后用作返回访问成功提示信息。

map:动态向结果集中填充一些额外的数据

例如:R.success().add(key,value)函数向其中填充额外数据。

static R success(T object): 静态方法,用于创建R类的实体类对象

R.success(返回的数据对象) 即可返回携带返回数据 设置好状态码的R对象。通过springMVC中的@ResponseBody注解将返回的R对象转化为json类型数据

同理:static R error(String msg): 静态方法,用于创建R类的实体类对象

R.error(返回的错误信息) 即可返回携带提示信息 设置好状态码的R对象。

add():用于向结果集中添加额外的动态信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值