Postman調試技巧之接口簽名

1. 引言

你們在調用第三方接口時,一般都會獲得ClientIDSecretKey ,而後再經過簽名後才能請求第三方接口。那麼,在僅僅使用Postman的狀況下,可否完成這樣繁瑣的簽名操做呢?答案是確定的。接下來讓咱們一塊兒瞭解Postman的強大之處。前端

2. 服務端

首先咱們看看下圖服務端的校驗邏輯:後端


細心的朋友可能會發現,這裏我只獲取了請求中的Sign和Timestamp,而MasterKey是直接從配置中獲取。本文重點討論Postman的接口簽名,因此簡化了服務端的邏輯。須要瞭解接口簽名設計的能夠自行搜索學習,本文不作闡述。函數

這裏咱們能夠看到接口請求中須要包含x-signx-timestamp,簽名規則爲 MD5(${masterKey}.${timestamp}) 瞭解到接口驗證規則後,咱們能夠繼續日後走。工具

3. 構造請求

咳咳,接下來到本文重點。首先看看Postman的主界面:學習


爲了方便後續的測試,咱們先把Host和MasterKey添加到環境變量中:測試


緊接着咱們把請求方式、接口地址、請求Body依次填寫完整:設計


好了,內容都填好後,咱們要往Headers裏填寫x-signx-timestamp:code


如今問題來了,正常狀況下咱們須要在Headers裏面填寫固定的內容。可是如今咱們要填寫的x-signx-timestamp是須要計算出來的。沒法直接填寫,怎麼辦?cdn

在解決這個問題以前,我須要補充一些知識點。讓咱們先來了解一下Postman的工做流程:blog


Postman每發起一個請求以前,均可以選擇執行一段pre-request script。這偏偏給了咱們機會在請求發起以前生成咱們須要的數據。閒話少說,咱們打開Postman中的pre-request script面板:


這裏須要補充一下,pre-request script僅支持JavaScript語法。有了這個強大的功能,咱們回過頭來梳理下咱們要作的事情:生成x-signx-timestamp。咱們把任務分解成更小的步驟:

  1. 獲取MasterKey
  2. 得到當前時間戳
  3. 計算MD5簽名值
  4. 將時間戳和簽名值填充到Headers

第一步很是簡單,還記得剛纔咱們把MasterKey放到哪裏了嗎?沒錯,咱們在一開始就把MasterKey放到了環境變量裏,而面板的右側有一個Snippet:Get an environment variable,點擊後便可獲得獲取環境變量的語句,咱們稍加修改就變成這樣:


第二步也不難,咱們利用Date.now()生成當前時間戳:


接着咱們繼續下一步。咦,計算MD5???JavaScript並無提供現成的計算函數,怎麼辦?Postman早就考慮到了這點,因此內置了一系列經常使用的庫:


如今咱們能夠利用CryptoJS這個庫來完成計算MD5值:


接着,咱們在變量中添加signtimestamp


最後,咱們在headers中添加{{timestamp}}和{{sign}}:


4. 驗證結果

咱們將寫好的請求發出,並在服務端斷點,看看是否能獲取到x-signx-timestamp,而且對比計算出的sign是否一致:


簽名結果一致,校驗成功!

5. 總結

Postman是一個很是強大的接口工具,就像他說的那句話同樣:

Postman Makes API Development Simple.

而咱們也學習到如何在接口請求發起以前進行一些邏輯操做而且修改請求頭的內容。順帶還給前端的同窗粗略地瞭解後端的接口簽名設計是如何工做的。後續我還會繼續挖掘Postman的一些好玩的技巧,幫助你們更好的利用Postman來提升效率。

相關文章
相關標籤/搜索