拿走了什麼前端
今天來講下Spring Boot中統一返回結果的封裝。bash
來看一張沒有封裝的。微信
狀態碼
的結果,前端會根據這個結果來提示用戶操做的結果,像這樣成功的會返回
操做成功
的消息提示
首先建立一個枚舉用來RetCode
app
public enum RetCode {
//成功
SUCCESS(200),
//失敗
FAIL(400),
//錯誤
FALSE(404),
//內部錯誤
ERROR(500);
private int code;
private RetCode(Integer code){
this.code = code;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
複製代碼
裏面code的數值你能夠根據實際來自定義~ 而後對結果處理的一個類測試
public class RetResult {
private Integer code;
private String msg;
private Object data;
public RetResult(){
this.code = Integer.valueOf(0);
this.msg = "";
this.data = null;
}
/**
*返回狀態碼、信息、以及數據
*/
public RetResult(Integer code, String msg, Object data) {
this.code = code;
this.msg = "";
this.data = null;
}
/**
*只返回狀態碼,以及信息能夠用於失敗時候來使用
*/
public RetResult(Integer code, String msg) {
this.code = code;
this.msg = msg;
this.data = null;
}
/**
*只返回狀態碼和數據
*/
public RetResult(Integer code, Object data) {
this.code = code;
this.msg = "";
this.data = data;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
複製代碼
其中msg
是你想要返回的信息,code
就是自定義的狀態碼了,data
是要返回的數據,這裏我採用了Object
類型。並且這裏我寫了幾個重載方法,能夠根據本身的需求來靈活調整ui
把咱們上節UserService
類改造一下this
public RetResult queryUserById(Map<String,Object> map){
if(map.get("user_id") == null){
return new RetResult(RetCode.FAIL.getCode(),"id不能爲空");
}
return new RetResult(RetCode.SUCCESS.getCode(),userMapper.queryUserById(Long.parseLong(map.get("user_id").toString())));
}
複製代碼
就是把咱們以前返回的數據給放到Data中了,而後UserController
的改造spa
@RequestMapping(value = "/user/getUser")
public RetResult getUser(@RequestBody Map<String ,Object> map){
return userService.queryUserById(map);
}
複製代碼
其中Controller
咱們能夠集中來處理Exception
這個之後會加上。 先測試若是咱們先不傳數據返回的信息:code