Spring Boot(二)對返回結果的統一封裝

拿走了什麼前端

今天來講下Spring Boot中統一返回結果的封裝。bash

爲何要封裝結果?

來看一張沒有封裝的。微信

再看是通過封裝過返回的數據。

從第二張能夠看到多了,咱們自定義的結果狀態、信息以及數據,在咱們正常開發的過程當中咱們須要給前端返回一些帶有 狀態碼的結果,前端會根據這個結果來提示用戶操做的結果,像這樣成功的會返回 操做成功的消息提示

若是操做失敗會返回失敗的提示

因此咱們對結果的處理會很重要。

步驟

首先建立一個枚舉用來RetCodeapp

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

改造Service、Controller

把咱們上節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

而後傳入正確數據來返回的:

這樣體驗就很好了~ 歡迎你們來關注個人微信公衆號~

相關文章
相關標籤/搜索