Spring Boot 集成教程
- Spring Boot 介紹
- Spring Boot 開發環境搭建(Eclipse)
- Spring Boot Hello World (restful接口)例子
- spring boot 連接Mysql
- spring boot配置druid連接池連接mysql
- spring boot集成mybatis(1)
- spring boot集成mybatis(2) – 使用pagehelper實現分頁
- spring boot集成mybatis(3) – mybatis generator 配置
- spring boot 接口返回值封裝
- spring boot輸入數據校驗(validation)
- spring boot rest 接口集成 spring security(1) – 最簡配置
- spring boot rest 接口集成 spring security(2) – JWT配置
- spring boot 異常(exception)處理
- spring boot 環境配置(profile)切換
- spring boot redis 緩存(cache)集成
概述
rest接口會返回各種各樣的數據,如果對接口的格式不加約束,很容易造成混亂。
在實際項目中,一般會把結果放在一個封裝類中,封裝類中包含http狀態值,狀態消息,以及實際的數據。
本篇實現一個結果的封裝類。
封裝類代碼
Result.java
public class Result implements Serializable {
@SuppressWarnings("unused")
private static final org.slf4j.Logger log = LoggerFactory.getLogger(Result.class);
private static final long serialVersionUID = -1802122468331526708L;
private int status = -1;
private String message = "待處理";
private Map<String, Object> data = new HashMap<String, Object>();
public Result(){}
public Result(int status, String message){
this.status = status;
this.message = message;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Map<String, Object> getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
public void putData(String key, Object value) {
data.put(key, value);
}
public void removeData(String key) {
data.remove(key);
}
@Override
public String toString() {
return "Result{" +
"status=" + status +
", message='" + message + '\'' +
", data=" + data +
'}';
}
}
解釋
代碼應該很好懂,主要是3個成員:
- status - 狀態值,應該對應於http的狀態值(200,404等等)
- messsage - 狀態消息,如“頁面未找到”
- data - 是一個hashmap,可放入鍵值對
下面會創建一個實際項目來演示Result封裝類的用法。
創建項目
創建spring boot項目
打開Eclipse,創建spring boot的spring starter project項目,選擇菜單:File > New > Project ...
,彈出對話框,選擇:Spring Boot > Spring Starter Project
,在配置依賴時,勾選web
,如不清楚怎樣創建spring boot項目,參照教程: [spring boot hello world (restful接口)例子]。
添加代碼
項目增加文件如下圖
Result.java文件已經在上面說明過。
控制類HelloController.java
HelloController控制類實現一個接口,用於測試封裝類:
@RestController
public class HelloController {
@RequestMapping(value="/hello", method = RequestMethod.GET, produces="application/json")
public ResponseEntity<Result> hello(@RequestParam(value="bad", required=false, defaultValue="false") boolean bad) {
// 結果封裝類對象
Result res = new Result(200, "ok");
if(bad) {
res.setStatus(400);
res.setMessage("Bad request");
// ResponseEntity是響應實體泛型,通過它可以設置http響應的狀態值,此處返回400
return new ResponseEntity<Result>(res, HttpStatus.BAD_REQUEST);
}
// 把結果數據放進封裝類
res.putData("words", "Hello world!");
// ResponseEntity是響應實體泛型,通過它可以設置http響應的狀態值,此處返回200
return ResponseEntity.ok(res);
}
}
解釋
我們把返回的“Hellow world!”字符串放進Result封裝類返回,同時為使http響應頭部的狀態值與Result中的狀態值一致,使用ResponseEntity
設置狀態值。
當請求/hello
,返回200;請求/hello?bad=true
,返回400。
運行
Eclipse左側,在項目根目錄上點擊鼠標右鍵彈出菜單,選擇:run as -> spring boot app
運行程序。 打開Postman訪問接口,運行結果如下:
當請求/hello
,返回200
請求/hello?bad=true
,返回400
總結
本文介紹了結果封裝類,供大家在實踐中參考。