我們在寫Restful Api時躏尉,經(jīng)常需要返回這種結(jié)構(gòu)的數(shù)據(jù):
{
"code": 0,
"data": {},
"msg": "",
"error": ""
}
? 其中code方便我們判斷操作是否成功艺谆,復雜一點可以作為操作碼弊决,封裝錯誤類型窑邦,比如401為登錄過期擅威,當然這不是本文的重點,不做過多描述冈钦。data為我們實際需要的數(shù)據(jù)郊丛,msg和error都是附帶的信息,其實可以只要一個瞧筛,這里完全看個人喜好宾袜,我是把錯誤信息都放到error里面,操作成功需要附帶信息的話驾窟,放到msg里面庆猫。
? 需要說明的是,SpringMVC里面ResponseEntity已經(jīng)實現(xiàn)了這個功能绅络,而且還更加強大月培,比可以設置header之類的。而大部分情況我們只需要這一簡單功能恩急,所以我封裝了一個工具類杉畜,并且在前兩個項目中都用得比較滿意。先貼上主要代碼:
/**
* Created by wolf on 2017/9/16.
*/
public class Res<T> {
private int code = 0;
private T data;
private String msg = "";
private String error = "";
public static Res ok = new Res();
public static Res fail = new Res().code(-1);
public static Res build() {
return new Res();
}
public static <T> Res build(T data){
return new Res().data(data);
}
public Res code(int code) {
this.code = code;
return this;
}
public Res data(T data) {
this.data = data;
return this;
}
public Res msg(String msg) {
this.msg = msg;
return this;
}
public Res error(String error) {
this.error = error;
return this;
}
//省略getter
}
? data為泛型衷恭,可以是各種你想要的類型此叠。然后對于setter,直接返回this來實現(xiàn)鏈式調(diào)用随珠。提供兩個build方法灭袁,這里作用并不大,僅僅是不想去寫new窗看。在開發(fā)過程中茸歧,其實我們大部分情況下只需要知道操作是否成功,所以這里就單獨定義了兩個靜態(tài)實例显沈,ok的code為0软瞎,表示操作成功逢唤,fail為操作失敗。這段代碼比較基礎涤浇,也沒啥好說的鳖藕。下面再簡單的列幾個使用的代碼吧。
@RestController
@RequestMapping("/xxx")
public class XxxController{
@GetMapping
public Res<Xxx> getXxx(){
Xxx xxx = new Xxx();
return Res.build(xxx);
// return Res.ok.data(xxx).msg("獲取成功");
// return Res.fail.error("獲取失斨欢А吊奢!");
// return Res.fail.code(401).error("登錄過期!");
}
}
? 然后纹烹,沒有然后了页滚,就是這么簡單。最近太無聊铺呵,改bug(漫無邊際的優(yōu)化)簡直想吐裹驰,前兩天買了一堆配件組了臺主機,然而打游戲也打不動了片挂!