iT邦幫忙

1
鐵人賽 神助攻 Nutanix

許多有趣的變數!如何使用 Postman 嘗試 Nutanix 的 API

https://ithelp.ithome.com.tw/upload/images/20201015/20129565Cpxr3wptEM.png

那些具有使用API經驗的人將聽說過並熟悉無處不在的API測試和開發工具。但是,Nutanix Developer Portal上有很多內容專門針對那些剛開始使用Nutanix REST API的內容,包括設置您的第一個請求。今天的文章將介紹如何設置測試環境,以使該測試變得快速,容易。

Step 1 – 安裝 Postman

這有點不費吹灰之力。如果尚未安裝,請訪問 https://getpostman.com ,下載最適合您的操作系統的版本(我使用Ubuntu Linux 19.04和Cinnamon Desktop Environment)並安裝它。 不必擔心現在就自定義安裝或設置-我們將稍後進行一些介紹。

Step 2 – 基礎設定

在這裡,我將介紹安裝Postman後所做的一些基本更改。 要獲得這些設置,請單擊“郵遞員設置”圖標(看起來像扳手),然後選擇“設置”。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565Bhx2F7SCE7.png
Postman “Settings” option

  • 啟用黑暗主題。 在任何環境下,即使在晚上,我通常也不喜歡深色模式。但是,以這種方式配置後,Postman是為數不多的應用程序之一。如果您希望Postman環境看起來像在偶爾的屏幕快照中那樣,請單擊“主題”選項卡,然後將主題從淺色切換為深色。
  • 禁用SSL認證驗證。 在“常規”選項卡上,關閉標有“ SSL證書驗證”的選項。請注意生產環境中此更改的安全隱患。為什麼?即使無效,所有SSL證書也會被自動接受。那些有使用Nutanix Prism或Nutanix REST API且未安裝有效證書的經驗的人會意識到,默認的自簽名證書在真正可信的意義上是無效的。如果發現此證書無效,則禁用SSL證書驗證可以避免Postman API請求失敗。
  • 設置請求超時。 默認情況下,請求超時設置為0。這意味著如果未收到響應,則每個API請求將永遠等待。對於我們來說,這確實不是一個很好的默認設置,因為我們希望有機會解決問題並在不正確的情況下重試。我將我的時間設置為30秒,即3000毫秒。
  • 禁用匿名使用情況數據。 這是可選的,但值得注意的是默認情況下已啟用此功能。例如,在安全環境中,通常會阻止/禁止或控制所有外部網絡活動。如果您的環境被認為是安全的,則不妨關閉此選項。
  • 啟用兩窗格視圖。默認情況下,已設置Postman的用戶界面,因此請求設置位於頂部,而響應則位於下方。這樣做沒什麼問題,但我希望答复顯示在Postman UI右側的窗格中。也許是因為默認的Google Chrome開發者工具位置?
  • 配置代理。 在企業環境中,您的PC /筆記本電腦/ VM可能位於某種代理服務器之後。如果需要在Postman中顯式配置,可以在“代理”選項卡上進行配置。

完成所有操作後,以下是我的常規標籤。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565W1l5dmZQ9n.png
Postman 設置 – 常規標籤

Step 3 – 創建 Collection

因為我們都是某種類型的開發人員,所以我假設某種程度的組織和秩序對我們所有人而言都是第二自然。 考慮到這一點,創建一個Postman Collection來組織我們的事情是有意義的。

  • 在Postman UI的左側,單擊“新建收藏集”。 給集合起一個名字,例如Nutanix REST API Testing。
  • 現在忽略“授權”選項卡; 我們很快會再談。
  • 轉至“變量”標籤,我們將開始確保工作流程盡可能高效。

Step 4.1 – 環境變數

Postman最簡單但也是最好的功能之一就是使用變量的能力。 為何如此有用的一個很好的例子是Prism Central“ vs” Prism Element。 在測試各種Nutanix REST API請求時,通常會在Prism Central和Prism Element之間進行切換,對多個請求使用相同的憑據,並在多個位置使用相同的實體UUID。 每次手動輸入這些值,然後在值更改時根本不需要更改每個實例。 作為附帶說明,Postman還可以獲取您保存的API請求,將其導出,並允許您與同事共享請求集合。 在這種情況下,您可能不想共享特定的環境設置,但仍然允許您的同事一次只輸入一次信息。 解決所有這些問題的方法是使用Postman變量。

如您所料,第一件事就是我們沒有定義變數。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565rcg3qOzuFi.png
未定義變數的 Postman Collection

在本文中,我將完全按照上文所述進行操作。 Prism Central和Prism Element IP地址都將經常使用,但是都將使用相同的憑據。 除了安全性最佳實踐,在測試過程中這並不少見。 請注意,Postman絕對可以管理全局變量,即每個集合以及整個Postman工作區中可用的變量。 在此示例中,我僅定義它們可用於特定集合的位置。

  • 點擊添加新變量鏈接,然後輸入變量名稱為pc_ip。 初始值將與共享集合的任何人共享,如果每個人都使用相同的變量值,則該初始值會很好。 當前值未在任何地方同步,僅在本地可用。 在為pc_ip設置初始值時,請注意“當前值”也將設置為相同的值。
  • 然後,針對該集合需要的其他變量重複此過程,如下表所示。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565kgI2uNdp96.png

Step 4.2 – 使用變數

設置請求時,使用上面定義的變量很簡單。 需要引用變量的地方,語法如下:{{variable}}。 查看下面的請求,請注意,沒有直接輸入Prism Central IP地址,而是通過變量引用添加了該地址。 用戶名和密碼也做了同樣的事情。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565sMfvwX8ndj.png
使用 Postman 變數代替手動輸入 Prism Central IP 地址

https://ithelp.ithome.com.tw/upload/images/20201015/20129565caEWjmJSBv.png
使用 Postman 變數代替手動輸入用戶名和密碼

Step 5 – Pre-request Scripts

下面的第5步留在這裡,僅供請求前腳本參考。當前版本的 Postman 確實支持JSON請求有效載荷內的變量替換。

默認情況下,Postman似乎在POST請求的正文中不允許使用{{variable}}語法。我敢肯定那是不正確的,但是由於某種原因,發送帶有這樣的變量的請求,這樣只會導致在該變量的位置不發送任何內容。但是,要使該工作正常進行,需要以預請求腳本的形式進行一些前功。

這是POST請求的簡單JSON負載:

{
    "spec":{
        "name": "{{vm_name}}",
        "resources":{
        }
    },
    "api_version":"3.1.0",
    "metadata":{
        "kind":"vm"
    }
}

{{vm_name}} 變數不會像您期望的那樣被替換。但是,轉到“ Pre-req”選項卡並將其添加為請求前腳本可以解決此問題。

var vm_name = pm.variables.get("vm_name");

postman.setEnvironmentVariable("vm_name", vm_name)

Step 6 – 輸入 Sample Collection

如果沒有看到其中的一些內容,那麼這樣的文章是不完整的。考慮到這一點,我提供了一個 Postman 集合,其中包含一些示例 Nutanix REST API 請求(v1,v2.0和v3)。讓我們將其導入。

  • 前往NutanixDevs Github並下載Nutanix REST API Testing.postman_collection.json。
  • 切換到郵遞員,然後在主界面的左上角附近,點擊導入按鈕。
  • 選擇選擇文件(或將文件拖放到UI中),然後瀏覽到您剛剛下載的JSON文件。

此階段沒有“確定”按鈕,因此,如果一切順利,您將在 Postman UI 的右下角看到類似這樣的消息。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565NcCRMvHP6f.png
成功導入 Postman Sample Collection

並且,在集合的左側,您會看到許多示例API請求。 對於此屏幕截圖,我擴展了新集合中的每個分支。

https://ithelp.ithome.com.tw/upload/images/20201015/20129565TTmaIU53jS.png
輸入的 Postman Sample Collection

該集合具有許多為您預先配置的功能。

  • 授權已設置為使用集合範圍變量
  • 已將所有請求設置為繼承父項(即集合)的授權
  • 添加了變量列表,以演示如何在請求中使用它們(以下屏幕截圖)

https://ithelp.ithome.com.tw/upload/images/20201015/20129565Gx3QfTSh5T.png
用於樣本API請求的預定義集合範圍變量

不過,您會從第4步中回想起,任何變量的“當前值”僅是局部變量,不會隨集合一起導出。這就是為什麼只有幾個變量具有當前設置的值的原因。再深入一點,您會看到確實設置了值的變量是可能在整個環境中使用的變量。例如,{{username}}可以在測試階段共享,並且無論您身在何處,CentOS 8 ISO的URI都可能有效。 CentOS 8圖片鏡像的“免責聲明”位於澳大利亞,因為這就是我的住所。您可能想要通過從CentOS網站獲取適當/更接近的鏡像URI來更改此設置。 ?

除此之外,您所需要做的就是用對您的環境有意義的值填充變量。

如果您決定查看stats請求示例,請確保查看標題為“通過API獲取VM性能指標”的文章,因為它詳細介紹了該過程的工作方式以及start_time_in_usecs之類的含義。

近一步的相關內容

如果您的工作站/ PC /筆記本電腦/ VM以前從未真正用作開發環境,那麼現在是查看我們的開發設置實驗室的好時機! 它專門為那些相對較新的開發人員編寫,涵蓋了推薦的工具,設置和一些自定義位,這些將有助於使您的開發工作更加順暢。

開發人員設置實驗室可在Nutanix開發人員門戶網站實驗室頁面上找到。

總結

儘管Postman確實擁有比上述功能更多的功能,但是配置集合和一些變量可以使您開始進行更高效的測試。 例如,僅通過使用變量,就可以自動更改所有出現的API端點IP地址,從而自動保存自己。 從更高的層次上講,您還已經開始以合乎邏輯和吸引人的方式收集請求。

希望這篇簡短的文章對您有所幫助。

感謝您的閱讀,祝您有美好的一天!


尚未有邦友留言

立即登入留言