溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot怎么統一JSON信息返回

發布時間:2022-01-29 14:41:49 來源:億速云 閱讀:181 作者:zzz 欄目:開發技術

這篇文章主要介紹“SpringBoot怎么統一JSON信息返回”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“SpringBoot怎么統一JSON信息返回”文章能幫助大家解決問題。

調用后端服務后的返回結果有多種類型,如:String,Integer,Boolean,List,Map等,在一個項目中,為了保持統一性,我們方法返回結果可以全部使用JSON數據格式,如下:

{
    "code":200,
    "msg":"成功",
    "data":"JSON數據"
}

其中code 是本次請求處理結果對應的狀態碼,msg是狀態碼對應的解釋信息,data是要返回的數據內容,可以是任意一個對象。

封裝響應信息對象

public class ResponseEntity<T> implements Serializable {


    private static final long serialVersionUID = 3595741978061989861L;
    private Integer code;//狀態碼
    private String msg;//狀態碼對應信息
    private T 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 T getData() {
        return data;
    }


    public void setData(T data) {
        this.data = data;
    }
}

狀態碼,Http請求狀態碼有多種,使用枚舉列舉,如下示例:

public enum ResponseEnum {


    SUCCESS(200, "成功"),
    FAIL(-1, "失敗"),
    ERROR_400(400, "錯誤的請求"),
    ERROR_404(404, "訪問資源不存在"),
    ERROR_500(500, "服務器異常");


    private Integer code;
    private String msg;


    ResponseEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }


    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 class ResponseUtil {


    /**
     * 成功返回
     * @param object 返回數據
     * @return
     */
    public static ResponseEntity success(Object object){
        ResponseEntity resp = new ResponseEntity();
        resp.setCode(ResponseEnum.SUCCESS.getCode());
        resp.setMsg(ResponseEnum.SUCCESS.getMsg());
        resp.setData(object);
        return resp;
    }


    /**
     * 成功返回  無數據
     * @return
     */
    public static ResponseEntity success(){
        return success(null);
    }


    /**
     * 失敗返回
     * @param responseEnum 響應標識
     * @return
     */
    public static ResponseEntity error(ResponseEnum responseEnum){
        ResponseEntity resp = new ResponseEntity();
        resp.setCode(responseEnum.getCode());
        resp.setMsg(responseEnum.getMsg());
        return resp;
    }
}

Spring中的控制器可以用 @Controller@RestController注解來聲明,其中@Controller標識當前控制器是SpringMvc的控制器,要返回JSON對象數據,需要和@ResponseBody注解聯合使用;@RestController主要用來構建Restful風格接口,返回客戶端的請求數據,相當于同時使用@Controller@ResponseBody注解。

(推薦課程:Spring教程)

創建Pojo包及對應的實體類

public class DemoEntity {


    private Integer id;
    private String name;


    public Integer getId() {
        return id;
    }


    public void setId(Integer id) {
        this.id = id;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }
}

創建控制器

@Controller

@Controller
public class DemoController {


    @RequestMapping(value = "/users", method= RequestMethod.GET)
    @ResponseBody
    public ResponseEntity users(){
        List<DemoEntity> list = new ArrayList<DemoEntity>();
        DemoEntity demo = new DemoEntity();
        demo.setId(1);
        demo.setName("蝸牛");
        list.add(demo);
        DemoEntity demo1 = new DemoEntity();
        demo1.setId(2);
        demo1.setName("葡萄");
        list.add(demo1);
        return ResponseUtil.success(list);
    }
}

測試:啟動服務后,在瀏覽器地址欄輸入http://localhost:8080/users,可以看到頁面上的輸出信息

{"code":200,"msg":"成功","data":[{"id":1,"name":"蝸牛"},{"id":2,"name":"葡萄"}]}

@RestController

@RestController
public class DemoRestController {


    @RequestMapping(value = "/users1", method= RequestMethod.GET)
    public ResponseEntity users(){
        List<DemoEntity> list = new ArrayList<DemoEntity>();
        DemoEntity demo = new DemoEntity();
        demo.setId(1);
        demo.setName("蝸牛");
        list.add(demo);
        DemoEntity demo1 = new DemoEntity();
        demo1.setId(2);
        demo1.setName("葡萄");
        list.add(demo1);
        return ResponseUtil.success(list);
    }
}

請求后也能看到如上的結果。

關于“SpringBoot怎么統一JSON信息返回”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女