本文主要分兩部分翔试,第一部分是介紹postman的一些使用tips,第二部分是簡單介紹下自己基于postman/newman寫的一個HTTP接口監(jiān)控的程序~
postman
postman作為一個http請求模擬工具相信很多人都已經(jīng)用到了。postman有pc app,也有基于chrome 的app扇救,在使用體驗上刑枝,pc app會更好(比如打開太多tab時可以方便地關(guān)掉,跑collection時展示效果更好)迅腔。
目前装畅,有一點chrome app更好用的就是,它可以利用附帶的一個chrome擴展Postman Interceptor沧烈,方便地捕獲chrome的請求掠兄。而pc app需要通過它的proxy功能來捕獲請求。
1锌雀、使用Collection徽千、Floder管理你的http請求,并為Collection添加一些描述信息
2汤锨、使用Header Presets管理公用的http請求頭
3双抽、如果使用的是chrome app,那么通過Postman Interceptor還可以發(fā)送帶瀏覽器cookie的請求
4闲礼、順序的組織你的請求牍汹,這樣可以測試一些與請求順序相關(guān)的功能(保存在collection中的請求可以直接拖動以改變順序)
5、可以將某個請求的響應(yīng)結(jié)果保存下來柬泽,作為其響應(yīng)示例
6慎菲、使用環(huán)境變量(可用于切換開發(fā)環(huán)境/生產(chǎn)環(huán)境、設(shè)置動態(tài)參數(shù))锨并,有4個作用域(優(yōu)先級由高到低):Global, Environment, Local, Data露该。同名變量會使用優(yōu)先級高的。環(huán)境變量可以在請求的url第煮、參數(shù)解幼、header、script中訪問到包警。具體可查看文檔:Variables
7撵摆、postman還提供3個動態(tài)變量可以直接使用:
{{$guid}} : v4格式的guid
{{$timestamp}}: 當(dāng)前的時間戳
{{$randomInt}}: [0, 1000]的隨機數(shù)
8、使用Script害晦,你能夠(通過修改環(huán)境變量):
為請求構(gòu)造一些動態(tài)的參數(shù)
在請求之間傳遞數(shù)據(jù)
測試響應(yīng)結(jié)果是否正常
一個單一的請求在postman的執(zhí)行流程如下:
newman
newman是一個nodejs寫的命令行工具特铝,用于執(zhí)行postman的collection。
newman run examples/sample-collection.json
基于這個命令行工具壹瘟,可以寫一些腳本定時的跑鲫剿,然后根據(jù)newman的執(zhí)行結(jié)果,判斷接口是否正常稻轨,如果出現(xiàn)錯誤灵莲,則可以進(jìn)行告警。
monitor-man
postman 提供的監(jiān)控只能監(jiān)控公網(wǎng)上的接口澄者,而且還不支持使用data file笆呆。monitor-man是一個基于newman的nodejs模塊寫的帶webui的HTTP接口監(jiān)控程序请琳,你可以上傳postman的collection,并設(shè)置一個時間間隔赠幕,這樣就會起一個定時器去定時的跑collection了俄精,而且通過配置錯誤處理的handler,還能對錯誤進(jìn)行告警處理榕堰。
monitor-man設(shè)計如下:
依賴于Redis存儲上傳的collection竖慧、environment、data file逆屡,以及collection執(zhí)行狀態(tài)信息圾旨。
在monitor-man的distribute分支,是為多機房部署開發(fā)的魏蔗,只需在一個機房部署的monitor-man上創(chuàng)建collection砍的,并設(shè)置用于區(qū)分機房的環(huán)境變量名稱(表單中的distribute name),以及相應(yīng)的值(表單中的distribute value)莺治,monitor-man會自動從redis存儲中同步當(dāng)前機房需要跑的collection(同步的時間間隔為1分鐘)廓鞠。
如下collection配置示例:
監(jiān)控運行情況: