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