用Mockoon測試API交互
譯文?譯者 | 布加迪
審校 | 孫淑娟
自動處理重復的任務是系統管理員日常工作的核心部分。這種自動化越來越需要使用基于Web的API ,以便跨設備、云提供商或軟件即服務(SaaS)工具來協調活動。無論編寫的是shell腳本還是與Web服務交互的Ansible劇本,您都需要徹底測試代碼。
模擬API的能力是這個測試過程的重要部分。模仿真實的API,以便您開發和測試API交互。雖然一些工具和供應商提供實時沙盒環境,但能夠在本地模仿API對于高級測試場景非常有用,比如修改響應的正文或HTTP狀態代碼。如果您正處于自行開發API的初始階段,還需要在編寫代碼之前快速構建端點。
Mockoon就是支持這么做的一種選擇。Mockoon是一款出色的開源工具,有豐富的用戶界面,可用于快速構建模擬API,并在本地機器上運行它們。
安裝Mockoon
您可以通過官方軟件包在Windows、macOS和Linux上安裝Mockoon,包括AppImage和RPM格式。Mockoon安裝完畢后,官方文檔為新用戶提供了出色的??教程??。
Mockoon擁有圖形界面和命令行接口(CLI)實用程序,本文著重介紹如何使用圖形界面。
創建環境
在Mockoon中處理新項目的第一步是創建一個新環境。環境讓您可以將API端點分成邏輯組。每個環境也可以在自己的端口上運行,使您能夠在同一主機上模擬多個API。環境保存為JSON文件,可以輕松導入、導出并與代碼一起保存。
只要點擊如下所示的“新建環境”圖標,即可創建一個環境。它將提示您選擇保存環境JSON文件的位置。環境創建后,您可以開始為它添加路由。
圖1
添加基本的API路由?
大多數API交互都涉及一個簡單的請求和響應循環,該循環常常返回JSON對象。開始使用Mockoon前,建立一條簡單的API路由。點擊界面中的+號,即可為環境添加路由。
我在/api/v1/healthcheck處添加了返回200 OK狀態碼的路由,如下例所示。該示例還返回JSON響應,含有關于健康狀況檢查的信息:
圖2
一旦添加路由并啟動服務器(或重新啟動,如果它已經在運行),端點就可以訪問了:
圖3
生成隨機響應數據
API響應正文中的靜態值涵蓋許多基本的測試用例。Mockoon也可以在響應正文中生成隨機數據,用于更真實的測試。??Faker.js庫??用于生成隨機數據。隨機生成的值可以在響應正文中進行模板化,并返回給請求者。
在下面示例中,我添加了另一個端點:/api/v1/hosts/:id。:id表示這是一個URL參數。響應正文返回JSON對象,該對象包含附有隨機生成數據的多個字段。
圖4
使用此配置,針對API端點的每次調用都顯示一組不同的假數據:
圖5
注意:Mockoon實現的Faker.js版本可能不是最新的,因此在編寫模板時務必確保查看的是正確版本的Faker文檔。
添加身份驗證和規則
大多數API端點都需要身份驗證,常常采用含有API令牌的HTTP標頭這種形式。確保您的工具能夠正確處理來自端點的身份驗證失敗對于開發強大的自動化非常重要。Mockoon允許您定義可用于返回不同響應的規則,比如標頭需求。
規則是在路由的“規則”選項卡上定義的。下面的示例使用兩個規則擴展了/api/v1/hosts/:id端點。第一條規則(響應 1)返回HTTP 401 Unauthorized。如果沒有其他規則與請求匹配,就使用第一條規則。
圖6
第二條規則(響應 2)要求請求含有值等于40650a76的X-Auth-Token HTTP標頭。任何與此規則匹配的請求都會收到200 OK和來自上一個示例的JSON響應。
圖7
這些規則導致任何在X-Auth-Token標頭中不包含正確值的請求失敗,并返回HTTP 401 Unauthorized。擁有正確令牌的請求將繼續接收數據,如下所示:
圖8
這是使用規則根據請求屬性控制響應行為的一個基本示例。
Mockoon的規則引擎功能強大,能夠創建非常高級的場景。如果查閱??官方文檔??,可以最充分地了解它。
原文標題:??Test API interactions with Mockoon???,作者:Anthony Critelli?