项目开发的过程中, 后端要统一返回的数据结构,便于前端处理。例如每个请求,我们都需要知道 :
1. code : 服务器返回的状态码。例如 : 200 : 请求成功。500 : 服务器内部错误。
2. message: essage: 返回给前端的信息(比如请求成功等)
3. data : 返回给用户的数据(比如查询的信息)。
下面是封装完整的返回数据类:
import com.yyfly.common.http.HTTP;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 响应
*
* @author lin
* @date : 2018-08-08
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ResponseData implements Serializable {
private static final long serialVersionUID = -6936648847780505144L;
/**
* 状态码
*/
public Integer code;
/**
* 返回的消息
*/
public String message;
/**
* 返回的数据
*/
public Object data;
@Override
public String toString() {
return "ResponseData{" +
"code=" + code +
", message='" + message + '\'' +
", data=" + data +
'}';
}
public static ResponseData success() {
return success("request succeeded");
}
public static ResponseData success(Object data) {
return success("request succeeded", data);
}
public static ResponseData success(String message, Object data) {
return success(HTTP.SC_OK, message, data);
}
public static ResponseData success(Integer code, String message, Object data) {
return build(code, message, data);
}
public static ResponseData error(Integer code) {
return error(code, "request fail");
}
public static ResponseData error(Integer code, String message) {
return error(code, message, null);
}
public static ResponseData error(Integer code, String message, Object data) {
return build(code, message, data);
}
public static ResponseData build(HTTP.Status status) {
return build(status, null);
}
public static ResponseData build(HTTP.Status status, Object data) {
return build(status.value(), status.getReasonPhrase(), data);
}
public static ResponseData build(Integer code, String message, Object data) {
return new ResponseData(code, message, data);
}
}
在controller我们就可以直接使用它了:
1. 下面我们举个例子:
这是一个添加用户的方法,我们调用它的success,因为这里传入的是添加的用户的数据,所以它会默认匹配到我们的参数为data的success方法,code默认为200,message默认为"request successed" 。