一般来说控制层加的都是@RestController来表明任何一个请求都会有一个相应结果,规范的情况下都会定义一个全局的响应体,这里先展示一种简单的,有关响应码直接定义在该响应体类中:
public class AjaxResponse {
public static final String ERROR_MSG = "操作失败";
public static final String SUCCESS_MSG = "success";
public static final int SUCCESS_NO = 0;
public static final int FAILED = 500;
private int errorNo;
private String errorInfo;
private Object data;
private AjaxResponse() {
}
public static AjaxResponse newInstance() {
return new AjaxResponse();
}
public static AjaxResponse newInstance(int errorNo, String errorInfo) {
AjaxResponse response = new AjaxResponse();
response.setErrorNo(errorNo);
response.setErrorInfo(errorInfo);
response.setData(new HashMap<String, Object>());
return response;
}
public static AjaxResponse newSuccess() {
return newInstance(SUCCESS_NO, SUCCESS_MSG);
}
public static AjaxResponse new403() {
return newInstance(403, "Permission denied");
}
public static AjaxResponse new401() {
return newInstance(401, "Login required");
}
public int getErrorNo() {
return errorNo;
}
public void setErrorNo(int errorNo) {
this.errorNo = errorNo;
}
public String getErrorInfo() {
return errorInfo;
}
public void setErrorInfo(String errorInfo) {
this.errorInfo = errorInfo;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public void putData(String key, Object value) {
if (data == null || !(data instanceof Map)) {
data = new HashMap<String, Object>();
}
((Map) data).put(key, value);
}
public void setException(Exception e) {
if (null != e) {
this.setErrorNo(FAILED);
this.setErrorInfo(e.getMessage());
}
}
}
使用非常简单:
//一般先在方法的开始new 一个成功的响应体变量
AjaxResponse ajax = AjaxResponse.newSuccess();
//如果需要加入响应数据,则
ajax.putData("xx",xx); //可以写多个
//如果响应数据只有一个
ajax.setData(xx);
//业务逻辑无误,返回
return ajax
//如果是一些业务异常,则
return AjaxResponse.newInstance(500,"xxxxx");
//如果是一些常规的异常
return AjaxResponse.new401();
return AjaxResponse.new403();