一:定義響應碼枚舉
package com.example.demo.core.ret;
/**
* @Description: 響應碼枚舉,參考HTTP狀態碼的語義
* @author
* @date 2018/4/19 09:42
*/
public enum RetCode {
// 成功
SUCCESS(200),
// 失敗
FAIL(400),
// 未認證(簽名錯誤)
UNAUTHORIZED(401),
// 接口不存在
NOT_FOUND(404),
// 服務器內部錯誤
INTERNAL_SERVER_ERROR(500);
public int code;
RetCode(int code) {
this.code = code;
}
}
二:創建返回對象實體(泛型)
package com.example.demo.core.ret;
import java.io.Serializable;
import com.alibaba.fastjson.JSON;
/**
* @Description: 返回對象實體
* @author
* @date 2018/4/19 09:43
*/
public class RetResult<T> {
public int code;
private String msg;
private T data;
public RetResult<T> setCode(RetCode retCode) {
this.code = retCode.code;
return this;
}
public int getCode() {
return code;
}
public RetResult<T> setCode(int code) {
this.code = code;
return this;
}
public String getMsg() {
return msg;
}
public RetResult<T> setMsg(String msg) {
this.msg = msg;
return this;
}
public T getData() {
return data;
}
public RetResult<T> setData(T data) {
this.data = data;
return this;
}
}
說明:code為狀態碼、msg為提示信息、data為返回的數據
四:返回結果數據格式封裝
package com.example.demo.core.ret;
/**
* @Description: 將結果轉換為封裝后的對象
* @author
* @date 2018/4/19 09:45
*/
public class RetResponse {
private final static String SUCCESS = "success";
public static <T> RetResult<T> makeOKRsp() {
return new RetResult<T>().setCode(RetCode.SUCCESS).setMsg(SUCCESS);
}
public static <T> RetResult<T> makeOKRsp(T data) {
return new RetResult<T>().setCode(RetCode.SUCCESS).setMsg(SUCCESS).setData(data);
}
public static <T> RetResult<T> makeErrRsp(String message) {
return new RetResult<T>().setCode(RetCode.FAIL).setMsg(SUCCESS);
}
public static <T> RetResult<T> makeRsp(int code, String msg) {
return new RetResult<T>().setCode(code).setMsg(msg);
}
public static <T> RetResult<T> makeRsp(int code, String msg, T data) {
return new RetResult<T>().setCode(code).setMsg(msg).setData(data);
}
}
五:功能測試
@RequestMapping("/selectById")
public RetResult<UserInfo> selectById(Integer id){
UserInfo userInfo = userInfoService.selectById(id);
return RetResponse.makeOKRsp(userInfo);
}
改造后請求返回數據格式
{
"code": 200,
"msg": "success",
"data": {
"id": 1,
"userName": "1"
}
}
