SpringBoot如何統(tǒng)一JSON信息返回
SpringBoot統(tǒng)一JSON信息返回
調(diào)用后端服務后的返回結果有多種類型
如:String
,Integer
,Boolean
,List
,Map
等,
在一個項目中,為了保持統(tǒng)一性,我們方法返回結果可以全部使用JSON
數(shù)據(jù)格式
如下:
{ "code":200, "msg":"成功", "data":"JSON數(shù)據(jù)" }
其中code
是本次請求處理結果對應的狀態(tài)碼,msg
是狀態(tài)碼對應的解釋信息,data
是要返回的數(shù)據(jù)內(nèi)容,可以是任意一個對象。
封裝響應信息對象
public class ResponseEntity<T> implements Serializable { private static final long serialVersionUID = 3595741978061989861L; private Integer code;//狀態(tài)碼 private String msg;//狀態(tài)碼對應信息 private T data;//要返回的數(shù)據(jù) 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; } }
狀態(tài)碼,Http
請求狀態(tài)碼有多種,使用枚舉列舉
如下示例:
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; } }
創(chuàng)建一個公共類,生成響應對象
public class ResponseUtil { /** * 成功返回 * @param object 返回數(shù)據(jù) * @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; } /** * 成功返回 無數(shù)據(jù) * @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
對象數(shù)據(jù),需要和@ResponseBody
注解聯(lián)合使用;
@RestController
主要用來構建Restful
風格接口,返回客戶端的請求數(shù)據(jù),相當于同時使用@Controller
和@ResponseBody
注解。
創(chuàng)建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; } }
創(chuàng)建控制器
- @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); } }
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決Java字符串JSON轉換異常:cn.hutool.json.JSONException:?Mismatched?
這篇文章主要給大家介紹了關于如何解決Java字符串JSON轉換異常:cn.hutool.json.JSONException:?Mismatched?hr?and?body的相關資料,文中將解決的辦法通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01JAVA統(tǒng)計字符串中某個字符出現(xiàn)次數(shù)的方法實現(xiàn)
本文主要介紹了JAVA統(tǒng)計字符串中某個字符出現(xiàn)次數(shù)的方法實現(xiàn),可以循環(huán)使用String的charAt(int index)函數(shù),具有一定的參考價值,感興趣的可以了解一下2023-11-11springBoot整合jwt實現(xiàn)token令牌認證的示例代碼
實施Token驗證的方法挺多的,還有一些標準方法,比如JWT,本文主要介紹了springBoot整合jwt實現(xiàn)token令牌認證的示例代碼,具有一定的參考價值,感興趣的可以了解一下2024-08-08