为了规范接口标准,方便前后端联调,减少沟通成本,需要进行接口返回结果的统一
定义枚举类:ResultCode
该枚举类用于定义返回状态码与描述信息;作用是方便维护统一状态与描述信息,也方便查错。
public enum ResultCode {
SUCCESS(200,"成功"),
NOT_FOUND(404,"连接未找到"),
BAD_REQUEST(400,"请求无效"),
//....等等
;
private Integer code;
private String message;
private ResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
}
定义返回结果类:ResultData
统一的结果返回类至少包含三部分内容:code-状态码;message-描述信息;data-响应数据。
结果返回类使用函数式编程,方便返回信息的修改,避免不断的set操作。如下:可自定义
package cn.com.aiidc.common;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* 统一返回结果类:使用链式编程,返回类本身。
*
* @author gukr
*
*/
public class ResultData implements Serializable {
private static final long serialVersionUID = 1L;
private Integer code;
private String message;
private Map<String, Object> data = new HashMap<String, Object>();
private ResultData() {}
//通用返回成功
public static ResultData success() {
ResultData r = new ResultData();
r.setCode(ResultCode.SUCCESS.getCode());
r.setMessage(ResultCode.SUCCESS.getMessage());
return r;
}
//通用返回失败
public static ResultData fail() {
ResultData r = new ResultData();
r.setCode(ResultCode.UNSUCCESS.getCode());
r.setMessage(ResultCode.UNSUCCESS.getMessage());
return r;
}
//自定义状态码
public ResultData code(Integer code) {
this.setCode(code);
return this;
}
//自定义状态信息
public ResultData msg(String message) {
this.message = message;
return this;
}
//自定义data
public ResultData data(Map<String, Object> map) {
this.setData(map);
return this;
}
//自定义data
public ResultData data(String key, Object value) {
this.data.put(key, value);
return this;
}
private void setCode(Integer code) {
this.code = code;
}
private void setMessage(String message) {
this.message = message;
}
private void setData(Map<String, Object> data) {
this.data = data;
}
}