spring boot slf4j logback listener filter json aop http get scheduling tasks

Spring Boot EP 6:透過宣告類別(Class)來回傳JSON內容

宣告用於回傳(Response)的類別(Class)

通常在設計系統時,會為了Restful API的Request / Response設計固定的格式,本篇先專注於Response。

步驟1:設計Response的內容,其HTTP Body如下:

{
    "rspCode" : "...",
    "rspMsg" : "...",
    "rspData" : "..."
}

步驟2:在java/stockmarket/jovepater/com/stockmarket下建立一個名為Classes資料夾,並新增一個RspBody.java檔案。

步驟3:宣告名為RspBody的類別(Class)

package stockmarket.jovepater.com.stockmarket.Classes;

public class RspBody {
    // 回傳狀態代碼(自定義)
    private String RspCode;
    // 回傳狀態訊息(自定義)
    private String RspMsg;
    // 回傳資料,型別為Object,讓回傳的資料型別可以更多樣化
    private Object RspData;

    public RspBody(String RspCode, String RspMsg, Object RspData) {
        this.RspCode = RspCode;
        this.RspMsg = RspMsg;
        this.RspData = RspData;
    }

    public String getRspCode() {
        return RspCode;
    }

    public void setRspCode(String RspCode) {
        this.RspCode = RspCode;
    }

    public String getRspMsg() {
        return RspMsg;
    }

    public void setRspMsg(String RspMsg) {
        this.RspMsg = RspMsg;
    }

    public Object getRspData() {
        return RspData;
    }

    public void setRspData(String RspData) {
        this.RspData = RspData;
    }
}

PS:之後的程式碼,類別(Class)中的getRspCode、setRspCode等,都會以”getters and setters …”代替,如下面所示,撰寫程式的時候千萬不要看到範例沒有寫就忘記囉!

package stockmarket.jovepater.com.stockmarket.Classes;

public class RspBody {
    // 回傳狀態代碼(自定義)
    private String RspCode;
    // 回傳狀態訊息(自定義)
    private String RspMsg;
    // 回傳資料,型別為Object,讓回傳的資料型別可以更多樣化
    private Object RspData;

    public RspBody(String RspCode, String RspMsg, Object RspData) {
        this.RspCode = RspCode;
        this.RspMsg = RspMsg;
        this.RspData = RspData;
    }

    // getters and setters ...
}

調整Controller回傳JSON的撰寫方式

JSON說明:https://www.json.org/

步驟1:直接在回傳時引入RspBody這個類別,並將對應的參數填入。

package stockmarket.jovepater.com.stockmarket.Controllers;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import stockmarket.jovepater.com.stockmarket.Classes.RspBody;

@RestController
public class HelloController {

    @GetMapping("hello")
    public RspBody Hello() {
        return new RspBody("0000", "Success", "Hello World");
    }
}

步驟2:在application.properties設定檔中加入Url Bath Path。

server.servlet.context-path=/api

步驟3:啟動這個服務後,透過瀏覽器呼叫這個API,網址應該是http://127.0.0.1:8080/api/hello,會看到程式回傳我們所設計的格式與內容。

可以看到程式回傳的內容已經是JSON格式,在rspData這個欄位,因為是宣告成Object,所以基本上所有的型別都能承載,使用起來非常方便。

~ END ~


, ,

Related posts

Latest posts