spring boot 接口返回值封裝



Spring Boot 集成教程


概述

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接口)例子]。

image

添加代碼

項目增加文件如下圖

image

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

image

請求/hello?bad=true,返回400

image

總結

本文介紹了結果封裝類,供大家在實踐中參考。

完整代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM