浅解前后端分离项目R类的使用

296 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

最近开始练习springboot项目,在学习的过程中发现R类,之前见过几次,感觉太高端就跳过了没有去学习,趁着这次活动的机会,深入了解一下这个知识点。

image.png

在controller层中,R类用于接收后端返回的数据,将后端响应的结果传递给前端。R类统一了返回的格式。

R类的特征

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

package edu.lnu.recruitment.common.utils;

import org.apache.http.HttpStatus;

import java.util.HashMap;
import java.util.Map;

public class R {
    // 状态码
    private Integer code;

    //返回信息
    private String message;

    //返回数据
    private Map<String, Object> data = new HashMap<String, Object>();

    // 全部约束使用方法区执行和返回,不允许到到外部去new
    private R(){}

    public static R ok(){
        R r = new R();
        r.setCode(200);
        r.setMessage("成功");
        return r;
    }

    public static R error(){
        R r = new R();
        r.setCode(HttpStatus.SC_INTERNAL_SERVER_ERROR);
        r.setMessage("失败");
        return r;
    }

    public R message(String message){
        this.setMessage(message);
        return this;
    }

    public R code(Integer code){
        this.setCode(code);
        return this;
    }

    public R data(String key, Object value){
        this.data.put(key, value);
        return this;
    }

    public R data(Map<String, Object> map){
        this.setData(map);
        return this;
    }
}

R类通常放在common包中,因为涉及到前后端交互的接口都需要R类,便于前后端交互的统一。

需要注意的是,在查询资料的过程中,发现R类的格式并不统一,属性与方法各不相同,但是总体思想是相同的,