項目開發的過程中, 後端要統一返回的數據結構,便於前端處理。例如每個請求,我們都需要知道 :
code : 服務器返回的狀態碼。例如 : 200 : 請求成功。500 : 服務器內部錯誤。
message: essage: 返回給前端的信息(比如請求成功等)
data : 返回給用戶的數據(比如查詢的信息)。
下面是封裝完整的返回數據類:
import com.yyfly.common.http.HTTP;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 響應
*
* @author lin
* @date : 2018-08-08
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ResponseData implements Serializable {
private static final long serialVersionUID = -6936648847780505144L;
/**
* 狀態碼
*/
public Integer code;
/**
* 返回的消息
*/
public String message;
/**
* 返回的數據
*/
public Object data;
@Override
public String toString() {
return "ResponseData{" +
"code=" + code +
", message='" + message + '\'' +
", data=" + data +
'}';
}
public static ResponseData success() {
return success("request succeeded");
}
public static ResponseData success(Object data) {
return success("request succeeded", data);
}
public static ResponseData success(String message, Object data) {
return success(HTTP.SC_OK, message, data);
}
public static ResponseData success(Integer code, String message, Object data) {
return build(code, message, data);
}
public static ResponseData error(Integer code) {
return error(code, "request fail");
}
public static ResponseData error(Integer code, String message) {
return error(code, message, null);
}
public static ResponseData error(Integer code, String message, Object data) {
return build(code, message, data);
}
public static ResponseData build(HTTP.Status status) {
return build(status, null);
}
public static ResponseData build(HTTP.Status status, Object data) {
return build(status.value(), status.getReasonPhrase(), data);
}
public static ResponseData build(Integer code, String message, Object data) {
return new ResponseData(code, message, data);
}
}
在controller我們就可以直接使用它了:
下面我們舉個例子:
這是一個添加用戶的方法,我們調用它的success,因爲這裏傳入的是添加的用戶的數據,所以它會默認匹配到我們的參數爲data的success方法,code默認爲200,message默認爲"request successed" 。
本次的分享到此結束了,對於上面有任何不理解的歡迎到公衆號留言,我會及時回覆的。