面向接口开发,统一返回可以减少更改接口定义的频率
- 追加式
import java.util.HashMap;
import java.util.Map;
/**
* 与前端的交互实体
* @author zhubo
*/
public class HTTPResponse {
/**
* 响应代码,200为成功,其他为失败
*/
private int statusCode = MessageConstant.SUCCESS_CODE;
// 提示信息
private String message;
// 用户要返回给浏览器的数据
private Map<String, Object> data = new HashMap<>();
/**
* 陈宫返回体
* @return 返回Msg
*/
public static HTTPResponse success() {
HTTPResponse result = new HTTPResponse();
result.setMessage("处理成功");
result.setStatusCode(MessageConstant.SUCCESS_CODE);
return result;
}
/**
* 失败返回体
* @return 返回Msg
*/
public static HTTPResponse fail() {
HTTPResponse result = new HTTPResponse();
result.setMessage("处理失败");
result.setStatusCode(MessageConstant.FAIL_CODE);
return result;
}
/**
* 追加返回信息
* @param key key值
* @param value value值
* @return 返回Msg
*/
public HTTPResponse add(String key, Object value) {
this.getData().put(key, value);
return this;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
public void setMessage(String msg) {
this.message = msg;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
public int getStatusCode() {
return statusCode;
}
public String getMessage() {
return message;
}
public Map<String, Object> getData() {
return data;
}
}
- 另一种当时
import java.io.Serializable;
/**
* 统一响应
*
* @author k0590014
* @version v3
* @date 2019/3/4
*/
public class CustomResponse<T> implements Serializable {
/**
* 响应消息
*/
private String message;
/**
* 额外错误消息,一般用作请求异常时的附带异常信息,此字段不作展示,一般用于在线debug
*/
private String errorMessage;
/**
* 响应代码,200为成功,其他为失败
*/
private Integer statusCode = MessageConstant.SUCCESS_CODE;
/**
* 响应数据,无数据则为null
*/
private T data;
public CustomResponse() {
}
/**
* 一般用于正常响应, 消息+200
*/
public CustomResponse(String message) {
this.message = message;
}
/**
* 一般用于正常响应,只提供数据,不需要消息的请求
* 如果使用构造器函数来实现,会导致与只包含消息的构造器冲突,以至于只能传入非String类型的data,故使用工厂方法
*/
public static CustomResponse getDataInstance(Object data) {
CustomResponse customResponse = new CustomResponse();
customResponse.setData(data);
return customResponse;
}
/**
* 一般用于正常响应, 消息+数据,
* 注:当传入的data为String或integer时,编译器会选择下面两个具体类型的构造函数,
* 所以请选择适当的构造器,或getinstance函数
*/
public CustomResponse(String message, T data) {
this.message = message;
this.data = data;
}
/**
* 一般用于失败响应,消息+错误消息+500
*/
public CustomResponse(String message, String errorMessage) {
this.message = message;
this.errorMessage = errorMessage;
this.statusCode = MessageConstant.FAIL_CODE;
}
/**
* 多用于不需要返回数据,只有明确返回消息的请求, 消息+代码
*/
public CustomResponse(String message, Integer statusCode) {
this.message = message;
this.statusCode = statusCode;
}
/**
* 参数错误默认响应
*/
public static CustomResponse errorArgInstance() {
return new CustomResponse(MessageConstant.ERROR_ARGS, MessageConstant.FAIL_CODE);
}
/**
* 全参
*/
public CustomResponse(String message, String errorMessage, Integer statusCode, T data) {
this.message = message;
this.errorMessage = errorMessage;
this.statusCode = statusCode;
this.data = data;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public Integer getStatusCode() {
return statusCode;
}
public void setStatusCode(Integer statusCode) {
this.statusCode = statusCode;
}
public Object getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
静态类
public class MessageConstant {
/**
* 正常响应码
*/
public static final int SUCCESS_CODE = 200;
/**
* 异常响应码
*/
public static final int FAIL_CODE = 500;
/**
* 验证失败响应码
*/
public static final int AUTH_FAIL_CODE = 403;
/**
* 未知错误
*/
public static final String UNKOW_ERROR = "未知的意外错误,请稍后重试";
/**
* 参数错误
*/
public static final String ERROR_ARGS = "请求参数有误,请检查";
}