[Azure] 如何使用 Postman 執行 Azure API by 2021

有時僅只是需要簡單的 Azure API 測試, 但手上沒有相關的程式碼, 我們可以使用 Postman 的方式快速執行測試……

概述

有時僅只是需要簡單的 Azure API 測試, 但手上沒有相關的程式碼, 我們可以使用 Postman 的方式快速執行測試。

Postman 在進行已經更新,不同於往, 以下我將會使用 2021 版 Postman 並且登入後進行演示如何取得資源群組。

如使用的 Postman 與我不同時, 可確認是否登入。

正文

App Registration 設定

至 Azure Active Directory (AAD) 內 App Registrations 新增註冊,供透過 API 存取資訊時可驗證使用

該處由於僅測試使用,故可簡單輸入相關資訊並且使用預設設定即可

我使用的名字為 Postman 以供辨識,Redirect URI (optional) 使用 https://localhost 即可,並點擊註冊

完成後即可看到我們驗證需要的資訊: Application (client) IDDirectory (tenant ID),並且進行複製存放供之後使用

完成複製後, 點擊 Certificates & secret 並且新增 New client secret

資訊能不輸入,但是我建議使用建立 secret 日期,並且註記到什麼時候金鑰失效

原因為 client secret 最長只能使用 2 年, 我們可以根據資訊了解金鑰的有效期

當然如開發上有使用金鑰也需要特別留意,並且更新金鑰

 

 

紅框處即為我們需要的 client secret, 將 Value 裡的密碼複製,然後點擊 API permissions, 新增 Subscription 讀取權限,否則將會沒有授權讀取 Subscription 內的內容

完成設定後, 至 Subscription 下新增 Postman 應用程式讀取權限, 否則雖有授權但沒有權限進行讀取 Subscription 內的資源。

除此之外,預先記錄 Subscription Id,以供後續使用

完成後即可設定 Postman 設定

Postman 設定

新增一個 Collection,並且在 Authorization 下選擇 Bearer Token, 並且在 Token 內使用 {{bearerToken}} 作為變數

至 Variables 內新增我們原本記錄的相關變數:

bearerToken : 為空值,稍後會使用程式碼補上

clientId : 上方建立時的 Application ID

clientSecret : 上方建立 Certificates & Secret 時的 Value

tenantId : 上方建立時的 Directory Id

subscriptionId : 上方授權 Postman 之相關 Subscription Id

resource : https://management.azure.com 為 API 位置

至 Pre-request Script 下新增以下程式碼,程式碼為微軟 Azure 官方文件內的作者提供

if (!pm.collectionVariables.get("bearerToken") || Date.now() > new Date(pm.collectionVariables.get("bearerTokenExpiresOn") * 1000)) {
    pm.sendRequest({
        url: 'https://login.microsoftonline.com/' + pm.collectionVariables.get("tenantId") + '/oauth2/token',
        method: 'POST',
        header: 'Content-Type: application/x-www-form-urlencoded',
        body: {
            mode: 'urlencoded',
            urlencoded: [
                { key: "grant_type", value: "client_credentials", disabled: false },
                { key: "client_id", value: pm.collectionVariables.get("clientId"), disabled: false },
                { key: "client_secret", value: pm.collectionVariables.get("clientSecret"), disabled: false },
                { key: "resource", value: pm.collectionVariables.get("resource") || "https://management.azure.com/", disabled: false }
            ]
        }
    }, function (err, res) {
        if (err) {
            console.log(err);
        } else {
            let resJson = res.json();
            pm.collectionVariables.set("bearerTokenExpiresOn", resJson.expires_on);
            pm.collectionVariables.set("bearerToken", resJson.access_token);
        }
    });
}

完成並且進行 Save

新增 Request

貼上 Get Resource Group 之鏈接進行測試

Get Resource Group : https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups?api-version=2021-04-01

在 Authorization 使用預設值,並且執行即可看到回傳資訊

 

 

 

 

Done

參考鏈接

  • Azure REST API reference : https://docs.microsoft.com/en-us/rest/api/azure/
  • Azure REST APIs with Postman (2021) : https://blog.jongallant.com/2021/02/azure-rest-apis-postman-2021/
分級: 入門是認識, 基本是運用, 進階是混合結合
範本是已可下載或可使用的範例, 至於教程當然是學習的結晶