SpringBoot如何統(tǒng)一JSON信息返回
SpringBoot統(tǒng)一JSON信息返回
調(diào)用后端服務(wù)后的返回結(jié)果有多種類型
如:String,Integer,Boolean,List,Map等,
在一個項目中,為了保持統(tǒng)一性,我們方法返回結(jié)果可以全部使用JSON數(shù)據(jù)格式
如下:
{
"code":200,
"msg":"成功",
"data":"JSON數(shù)據(jù)"
}其中code 是本次請求處理結(jié)果對應(yīng)的狀態(tài)碼,msg是狀態(tài)碼對應(yīng)的解釋信息,data是要返回的數(shù)據(jù)內(nèi)容,可以是任意一個對象。
封裝響應(yīng)信息對象
public class ResponseEntity<T> implements Serializable {
private static final long serialVersionUID = 3595741978061989861L;
private Integer code;//狀態(tài)碼
private String msg;//狀態(tài)碼對應(yīng)信息
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, "服務(wù)器異常");
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)建一個公共類,生成響應(yī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 響應(yīng)標(biāo)識
* @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標(biāo)識當(dāng)前控制器是SpringMvc的控制器,要返回JSON對象數(shù)據(jù),需要和@ResponseBody注解聯(lián)合使用;
@RestController主要用來構(gòu)建Restful風(fēng)格接口,返回客戶端的請求數(shù)據(jù),相當(dāng)于同時使用@Controller和@ResponseBody注解。
創(chuàng)建Pojo包及對應(yīng)的實體類
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);
}
}測試:
啟動服務(wù)后,在瀏覽器地址欄輸入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);
}
}總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
搜索一文入門ElasticSearch(節(jié)點 分片 CRUD 倒排索引 分詞)
這篇文章主要為大家介紹了搜索一文入門ElasticSearch(節(jié)點 分片 CRUD 倒排索引 分詞)的基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
springmvc+shiro自定義過濾器的實現(xiàn)代碼
這篇文章主要介紹了springmvc+shiro自定義過濾器的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-10-10
Java面向?qū)ο蠡A(chǔ)知識之?dāng)?shù)組和鏈表
這篇文章主要介紹了Java面向?qū)ο蟮闹當(dāng)?shù)組和鏈表,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下2021-11-11
Spring配置文件解析之BeanDefinitionReader詳解
這篇文章主要介紹了Spring配置文件解析之BeanDefinitionReader詳解,ApplicationContext.xml配置文件解析成Document對象,真正對xml中元素解析的類是在BeanDefinitionDocumentReader的實現(xiàn)類中來完成的,需要的朋友可以參考下2024-02-02
Java判斷文件或者文件夾是否存在的功能(不存在創(chuàng)建,存在刪除)
在Java中,要判斷文件或文件夾是否存在,并根據(jù)判斷結(jié)果來執(zhí)行創(chuàng)建或刪除操作,你可以使用java.io.File類或者java.nio.file包中的類,本文介紹Java判斷文件或者文件夾是否存在,不存在創(chuàng)建,存在刪除,感興趣的朋友一起看看吧2025-03-03
SpringMVC實現(xiàn)Controller的三種方式總結(jié)
這篇文章主要介紹了SpringMVC實現(xiàn)Controller的三種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02

