2021年7月11日 星期日

透過 Postman Mock Servers 建立 API Server

Postman 這套工具使用率滿高的,當對方API尚未完成,或是需先提供API給對方測試,

使用mock server頂著用,會是一個不錯的選擇,由於設定方式有幾種選擇,紀錄一下。

建立 Mock Server

來到 postman 介面,點到 mock servers 項目,上方有加號可以新增

點選「+」號後,會進入設定步驟,如下圖,大概會有兩個步驟

第一步驟:選擇要哪個 collection 使用 mock,而 collection 後續會設定實際回傳給使用者的內容

第二步驟:設定該 mock server 的相關參數,包含名稱、是否 private...等等

第一步驟:

這邊有兩個頁籤,第一個頁籤「Create a new colleciton」是建立新的 collection,並設定至少

一筆 Request,第二個頁籤「Select an existing collection」為若你已經有既有 collection 那可以選擇哪

些 collection 要使用這個 mock server;這邊嘗試建立新的 collection,相關設定如下圖,

建立一筆 Get Method 的Request,url 先設定為 /heroes/ 後續會修改,Response Code

為200,Response 內容為為 json 格式 {"id":1,"name":"打野"}

切換到第二個頁籤「Select an existing collection」,畫面上會列出目前 workspace 下已存在的

collection,如下圖

由於我們要使用新建立的collection,所以切回來 「Create a new colleciton」頁籤,並且點選「next」來到下個步驟。

來到第二步驟,如下圖,其中 Mock server name 是一定要是設定的,這邊這邊 MS_HeroesApi,

而環境參數可以後續再設定,這邊先提一下環境變數項目各有哪些

第一項:是否要將等等建立的 mock server 的 url ,儲存至 environment 中,這樣你就不用手動加入

第二項:是否要將 mock server 設定為私有(不公開),若設定為私有後面有介紹如何取得 api-key

第三項:是否模擬網路延遲問題

設定完成後,點選右下方的「Create Mock Server」按鈕,就完成建立,並且畫面會來到下圖,

其中,包含我們剛剛建立的 mock server 項目MS_HeroesApi 在清單中,右方頁籤下方有該

 mock server 的 url ,下方也有方便複製的按鈕,而右上方 view collection docs 按鈕,可以

檢視該 mock server 有被哪些 collection 使用的內容

若你要檢視,剛剛上述的設定,可以點選右方的「...」然後選「 Edit」,畫面就會來到下方,可看到之前設定的內容

切回剛剛頁籤,複製 url

此時左方功能選項(如下圖),切到 Collections 項目,並且選取 MS_HeroesApi 下面的 GET 項目,

右方可看到 {{url }},並將剛剛複製的 url 內容貼上

這邊來到 [Get] /heroes/ 裡面的 default 項目(這個名稱可以改名),而這個項目是說,在 heroes 這

個request 預計想要回傳(response)的內容,而[Get] /heroes/ 可以有多個回傳案例

由於,我們期望回傳為json 格式,所以 headers 需指定application/json 以及 status code 設為200,

如下圖

可以使用postman 檢視送出結果,切回 [Get] /heroes/ 項目,並且點選 Send 按鈕,可以看到下方

回傳的結果會是 Default 設定的內容

嘗試修改 Default 名稱為 1_Record

設定 1_Record 的Response 內容為 「中路」

回到 [Get] /heroes/ ,點選 Send 檢視結果

這邊有個小地方需要注意,上面有提過,由於 [Get] /heroes/ 是可以有多個回傳案例,所以,送出

request 時,需要哪個案例回傳值,就是 url 的設定,要跟該案例的 url 一樣,

這邊條整 [Get] /heroes/ 的url ,後面加個 error 參數,送出就會回傳錯誤

調整 1_Record 案例,將url 也加上error 參數,並且回傳內容 name = 錯誤

回到 [Get] /heroes/,送出檢視回傳值

以上建立 Mock Server 的介紹,其實也可以透過 Collection 建立 mock server ,只要在已存在的

Colleciton 上點選滑鼠右鍵,即可看到 Mock Collection(如下圖),然後就會進入類似剛剛的設定

畫面,這邊就不重覆

實際呼叫 Api

建立mock server 完後,也設定了一個[Get] /heroes/ 的api,實際如何快速測試api

來到 mock servers ,點選要測試的 server,如下圖,說明一下數字區塊代表的意義

第1點:呼叫該API 的程式範例選項切換,可以選擇要用哪種程式實作的範例

第2點:該mock server 被哪些 collection request 使用,都會列在這裡

第3點:該collection request 下面有哪些 example,可以看到有 1_Record

第4點:該collection request 呼叫後的 Response 值

再看一下,第1點的選項有哪些,支援滿多語言的

若要檢視範例內容或是複製內容,可以點選中間的 click to expand 或是複製按鈕

使用 jsbin 呼叫 api

使用 cUrl 呼叫 api

Make mock server private

mock server 預設是公開的,只要知道 url 就可以呼叫,所以通常會設定為 private,下面是相

關設定步驟首先同樣來到 Postman 的 mock servers ,在清單中點選要設定的 server,點選右

方「...」再點 Edit

進入編輯畫面,這畫面前面有看過,把 Make mock server priate 選項打勾後並儲存

設定之後要取得 api key,需進到下方頁面,也可以透過上方畫面有 藍色連結可以開啟

來到這個網頁:https://go.postman.co/settings/me/api-keys

點選後會來到登入畫面

登入後,若沒有建立過任何 api-key,應該會是下方畫面

點選 Generate API Key 按鈕,畫面中先輸入要管理的API 名稱

再次點選 Generate API Key,就會看到以下畫面,可先點選右方的複製,再關閉

記得一定要先複製,因為關閉後就看不到完整的key 值(可以因為安全性吧)

關閉後,此時會看到清單上會有一筆

值得一提的是, 預設 api 有效期限為 60 天,最多180天,可在 API Key Settings 中看到

接下來,需要將 x-api-key 加入至 Request header 中,這訊息稍早畫面有提到,如下圖

使用 jsbin 試試看,先試試沒有夾帶 x-api-key,送出後會回傳錯誤訊息,說明找不到

加上 x-api-key 後

使用 postman 測試,若沒有 api-key 會錯誤

加上 x-api-key 後

以上就是建立 mock server 的相關設定,但在免費的使用者,API Keys 管理介面有點陽春,

沒有記載該筆key 是哪時候會到期日?若Key快到期能否設定通知機制?等等...,

可能產生的 key 還是需要另外記載確保,爆掉...

參考:

沒有留言:

張貼留言