有時僅只是需要簡單的 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) ID 與 Directory (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/