在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类的格式并不统一,属性与方法各不相同,但是总体思想是相同的。