現在開發過程中主要采用前后端分離的方式進行開發測試,也就是前端封裝請求,后端提供標準的API接口服務。一般現在json 格式受到開發者們的青睞,學習過程中我們可以設置接口的返回類型,那么怎么做到設置統一的返回格式呢?以下是在項目開發過程中一般的模式標準:
1、一般springboot?我們使用?SpringBoot
進行開發時,當我們引入?spring-boot-starter-web
場景啟動器后,該場景中就包含了?jackson
依賴,不需要再額外導入,并且默認開啟了注解掃描驅動;但是springmvc 則?引入支持json 的jar?
2、請求Controller ,設置json 格式的請求,一般使用RESTController 注解,這個注解s是?@Controller
和?@ResponseBody
注解的結合體,具有相同的作用,該注解只能標志在類上。
3、封裝統一的返回對象格式,一般我們有幾個關鍵項,code,msg,data ,如下:
public class ResponseResult<T> {
?
? ? /**
? ? ?* 狀態碼
? ? ?*/
? ? private Integer code;
?
? ? /**
? ? ?* 提示信息,如果有錯誤時,前端可以獲取該字段進行提示
? ? ?*/
? ? private String msg;
?
? ? /**
? ? ?* 返回的結果數據
? ? ?*/
? ? private T data;
?
? ? private ResponseResult() {
?
? ? }
?
? ? public ResponseResult(Integer code, String msg) {
? ? ? ? this.code = code;
? ? ? ? this.msg = msg;
? ? }
?
? ? public ResponseResult(Integer code, String msg, T data) {
? ? ? ? this.code = code;
? ? ? ? this.msg = 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 T getData() {
? ? ? ? return data;
? ? }
?
? ? public void setData(T data) {
? ? ? ? this.data = data;
? ? }
?
}
-----------------使用枚舉設置返回狀態碼及已知類型----------------
public enum ResultCode {
? ? /**
? ? ?* 通用狀態碼
? ? ?*/
? ? SUCCESS(1,"OK"),
? ? FAILED(-1,"FAIL"),
? ? /*
? ? 參數錯誤狀態碼
? ? ?*/
? ? PARAM_IS_INVAlID(101,"參數無效"),
? ? PARAM_IS_BLANK(101,"參數為空"),
? ? /* 用戶錯誤 ?201 - 299 ?*/
? ? USER_NOT_LOGIN(201,"未登錄"),
? ? USER_NOT_EXIST(202,"用戶不存在"),
? ? USER_LOGIN_ERROR(203,"登陸失敗,賬號或者密碼有誤"),
? ? NOT_PERMISSION(204,"無權限訪問"),
? ? /* 業務錯誤 301 - 399*/
? ? DATA_NOT_FOUND(301,"沒有數據");
?
? ? //返回狀態碼
? ? private Integer code;
?
? ? //返回消息
? ? private String msg;
?
? ? private ResultCode() {
? ??
? ? }
? ??
? ? ResultCode(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;
? ? }
}
通過在ResponseResult添加一般的返回方法設置類
public static <T> ResponseResult<T> setCommonStatusAndData(ResultCode resultCode, T data){
? ? return new ResponseResult<>(resultCode.getCode(), resultCode.getMsg(),data);
}
?
public static ResponseResult setCommonStatusNoData(ResultCode resultCode){
? ? return new ResponseResult<>(resultCode.getCode(), resultCode.getMsg());
}
我們的開發接口服務時可以進行使用一般
public?ResponseResult<T> getApi(輸入參數){
? ? 。。。。。。。。。。。。。。。。。
? ? return?new ResponseResult<>(code, msg, data);
? ? //或者使用
? ? return ResponseResult.setCommonStatusAndData(ResultCode.SUCCESS,user)
}