2023年9月20日 星期三

Postman Mock Server & Mock API

 在前後端分離的架構下,在 api 規格開出來後前端需等待後端完成 api 後才能做後續的開發;或是當不只是一個部門開發時,可能需要與其他部門合作等待對接API資料時。Mock Server能回傳假資料供前端使用,等後端完成 api 後他只需要切換 end point 就能使用真實資料。

Postman Mock Server 是一個可以快速建立 API Server 的工具,它可以讓您在沒有真實 API 的情況下,發出請求並返回 Postman 中定義的模擬數據。您只需要為您的請求添加一個或多個示例,然後創建一個模擬服務器,就可以模擬真實 API 的行為。Postman有可以每個月呼叫 1000 次 mock server  的免費額度,超過就必須要付費了。可以從這裡看到使用量。

使用 Postman Mock Server 建立 Mock API 的步驟:


1. 選擇一個現有的集合或添加一個新的集合(添加新的請求)。


2.選擇 Method 跟填寫 request 的 URL path。例如,如果您要模擬一個 GET 請求,可以填寫 /home_index。如果API已經設計好要回傳的內容也可以一併填入Request Body中。


3.給您的模擬服務器起一個名字,選擇是否要讓這個服務器是私人的(如果是私人的,您需要在Header中添加x-api-keyPostman API key),選擇是否要配置一個延遲模擬響應(例如模擬 2G/3G 網路或指定自定義延遲)。取得Postman API Key可以參考這裡


4.點擊「Create Mock Server」。Postman 就會顯示您使用模擬所需的詳細信息,包括Mock server的 URL。



5.點選左上角的Collections,Postman已經將第2步驟設定的 request添加進Collections內了。這裡您可以設定一個或是多個request和 對應的response(如果您需要讓 API 收到不同的參數而給不同的Reapose)。例如,如果您要模擬一個返回用戶資料的 JSON 格式響應,可以填寫如下:
{
"name": "Alice",
"age": 25,
"gender": "female"
}

6.按下「Save」,示例就更新完成,可以測試了。

7.使用您的模擬 URL,您可以立即開始發出請求。例如,如果您的模擬 URL 是 https://2ea7ee58-3881-4e72-961f-5c6ec20~~.mock.pstmn.io,那麼您可以發出 https://2ea7ee58-3881-4e72-961f-5c6ec20~~.mock.pstmn.io/getUser 這個請求,並收到您設定的示例響應。


網址參數設定:


可以針對不同的網址參數來做設定,就可以用來模擬分頁的功能。
點選左上角的Collections,點選之前建立的request 旁的『...』按鍵  ,選擇『Add example』建立新的example。設定參數與Response資料。然後儲存起來就是一個可以測試的API了。
先設定page1:

再設定Page2:

各自執行API就會顯示對應頁面的資訊。如果回應連結還有套上Mock API url的話在page1點選links 裡面 "next"的url會跳至page2,在page2點選links 裡面"first"的url會跳至page1。

除了參數與回應可以設定外還可以模擬錯誤回傳如回應時status code不等於200(Success)。
在新的example內點選headers 設定一組key為x-mock-response-code value=400的回傳值。儲存起來。

執行這組example就會得到Status為400 Bad Request及對應的回應。

Response給隨機資料:


Postman 本身就有提供給隨機資料的參數,主要在 example response 那邊把固定值改填參數就行。
隨機參數可以參考Postman的Dynamic variables文件。postman給的隨機參數資料為:
{
"name":"{{$randomFullName}}",
"userName":"{{$randomUserName}}",
"location":"{{$randomCity}}",
"company":"{{$randomCompanyName}}",
"jobTitle":"{{$randomJobTitle}}",
"updatedAt":"{{$timestamp}}"
}
將其此設定放到Example的Response回應中定儲存起來。

執行此Mock API就會得到下面的結果

設定Mock Server為私有的(Private)

如果Mock Server沒有設定為Private時,這個mock server 的 url 都是公開的。如果想要都一點安全防護的話可以將Mock Server設定為Private(私有的)。
可以從建立時勾選make mock server private外。也可以去編輯並選擇建立好的Mock Server。如下圖

進入選擇的會出現此Mock Server的log。在點選右上角的Edit Configuration鍵。

進入設定頁面時勾選Make mock server private並按下Update Mock Server鍵將設定儲存下來。

變成私有的Mock Server後所有 request 都需要Postman API Key,所以可以把它加入到 Environment,變數名稱為『x-api-key』。然後在Request的 Headers 的TAB下加入『x-api-key』這個參數並將環境變數 {{x-api-key}}設定為值。按下Send鍵就會得到正確的回傳值。

沒有設定的話就會出現就會出現認證錯誤的回傳



參考資訊:


沒有留言:

張貼留言