共用方式為


快速入門:使用 Azure 應用程式組態 建立Node.js控制台應用程式

在本快速入門中,您會使用 Azure 應用程式組態 JavaScript 提供者用戶端程式庫,利用 Azure 應用程式組態來集中儲存和管理應用程式設定。

適用於 JavaScript 的應用程式組態提供者建置在適用於 JavaScript 的 Azure SDK 之上,其設計訴求是要更容易搭配更豐富的功能使用。 它可讓您以 Map 物件的形式存取應用程式組態中的索引鍵/值。 它提供多個標籤的組態組合、索引鍵前置詞修剪、Key Vault 參考的自動解析等功能。 例如,本教學課程示範如何在 Node.js 應用程式中使用 JavaScript 提供者。

必要條件

新增索引鍵/值

將下列索引鍵/值新增至應用程式組態存放區。 如需如何使用 Azure 入口網站或 CLI 將索引鍵/值新增至存放區的詳細資訊,請移至建立索引鍵/值

機碼 內容類型
message 來自 Azure 應用程式組態的訊息 保留空白
app.greeting Hello World 保留空白
app.json {"myKey":"myValue"} application/json

建立 Node.js 主控台應用程式

在本教學課程中,您會建立 Node.js 主控台應用程式,並從應用程式組態存放區載入資料。

  1. 為專案建立名為 app-configuration-quickstart 的新目錄。

    mkdir app-configuration-quickstart
    
  2. 切換至新建立的 app-configuration-quickstart 目錄。

    cd app-configuration-quickstart
    
  3. 使用 npm install 命令安裝 Azure 應用程式組態提供者。

    npm install @azure/app-configuration-provider
    

連線至應用程式組態存放區

下列範例示範如何從 Azure 應用程式組態擷取組態資料,並在應用程式中加以利用。 根據預設,索引鍵/值會載入為 Map 物件,讓您能夠使用其完整索引鍵名稱來存取每個索引鍵值。 不過,如果您的應用程式使用組態物件,您可以使用 constructConfigurationObject 協助程式 API,根據從 Azure 應用程式組態載入的索引鍵/值來建立組態物件。

app-configuration-quickstart 目錄中建立名為 app.js 的檔案,並從每個範例中複製程式碼。

範例 1:使用預設選取器載入索引鍵/值

在此範例中,您會連線到 Azure 應用程式組態 並載入索引鍵/值,而不指定進階選項。 根據預設,其會載入不含標籤的所有索引鍵/值。 您可以使用Microsoft Entra ID 或 連接字串,連線到您的 應用程式組態 存放區。

您可以使用 DefaultAzureCredential 來向 應用程式組態 存放區進行驗證。 請遵循指示,將認證指派給 應用程式組態 數據讀取者角色。 在執行應用程式之前,請務必允許足夠的時間來傳播許可權。

const { load } = require("@azure/app-configuration-provider");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility

async function run() {
    console.log("Sample 1: Load key-values with default selector");

    // Connect to Azure App Configuration using a token credential and load all key-values with null label.
    const settings = await load(endpoint, credential);

    console.log("---Consume configuration as a Map---");
    // Find the key "message" and print its value.
    console.log('settings.get("message"):', settings.get("message"));           // settings.get("message"): Message from Azure App Configuration
    // Find the key "app.greeting" and print its value.
    console.log('settings.get("app.greeting"):', settings.get("app.greeting")); // settings.get("app.greeting"): Hello World
    // Find the key "app.json" whose value is an object.
    console.log('settings.get("app.json"):', settings.get("app.json"));         // settings.get("app.json"): { myKey: 'myValue' }

    console.log("---Consume configuration as an object---");
    // Construct configuration object from loaded key-values, by default "." is used to separate hierarchical keys.
    const config = settings.constructConfigurationObject();
    // Use dot-notation to access configuration
    console.log("config.message:", config.message);             // config.message: Message from Azure App Configuration
    console.log("config.app.greeting:", config.app.greeting);   // config.app.greeting: Hello World
    console.log("config.app.json:", config.app.json);           // config.app.json: { myKey: 'myValue' }
}

run().catch(console.error);

範例 2:使用選取器載入特定索引鍵/值

在此範例中,您可以指定 selectors 選項來載入索引鍵/值的子集。 只會載入開頭為 "app." 的索引鍵。 請注意,您可以根據需求指定多個選取器,每個選取器都有 keyFilterlabelFilter 屬性。

const { load } = require("@azure/app-configuration-provider");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility

async function run() {
    console.log("Sample 2: Load specific key-values using selectors");

    // Load a subset of keys starting with "app." prefix.
    const settings = await load(endpoint, credential, {
        selectors: [{
            keyFilter: "app.*"
        }],
    });

    console.log("---Consume configuration as a Map---");
    // The key "message" is not loaded as it does not start with "app."
    console.log('settings.has("message"):', settings.has("message"));           // settings.has("message"): false
    // The key "app.greeting" is loaded
    console.log('settings.has("app.greeting"):', settings.has("app.greeting")); // settings.has("app.greeting"): true
    // The key "app.json" is loaded
    console.log('settings.has("app.json"):', settings.has("app.json"));         // settings.has("app.json"): true

    console.log("---Consume configuration as an object---");
    // Construct configuration object from loaded key-values
    const config = settings.constructConfigurationObject({ separator: "." });
    // Use dot-notation to access configuration
    console.log("config.message:", config.message);         // config.message: undefined
    console.log("config.app.greeting:", config.app.greeting);   // config.app.greeting: Hello World
    console.log("config.app.json:", config.app.json);           // config.app.json: { myKey: 'myValue' }
}

run().catch(console.error);

範例 3:從索引鍵載入索引鍵/值和修剪前置詞

在此範例中,您會使用 trimKeyPrefixes 選項來載入索引鍵/值。 載入索引鍵/值之後,會從所有索引鍵修剪前置詞 "app."。 當您要篩選至特定索引鍵前置詞來載入應用程式特定的組態時,這會非常有用,但您不希望程式碼在每次存取組態時都攜帶前置詞。

const { load } = require("@azure/app-configuration-provider");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility

async function run() {
    console.log("Sample 3: Load key-values and trim prefix from keys");

    // Load all key-values with no label, and trim "app." prefix from all keys.
    const settings = await load(endpoint, credential, {
        selectors: [{
            keyFilter: "app.*"
        }],
        trimKeyPrefixes: ["app."]
    });

    console.log("---Consume configuration as a Map---");
    // The original key "app.greeting" is trimmed as "greeting".
    console.log('settings.get("greeting"):', settings.get("greeting")); // settings.get("greeting"): Hello World
    // The original key "app.json" is trimmed as "json".
    console.log('settings.get("json"):', settings.get("json"));         // settings.get("json"): { myKey: 'myValue' }

    console.log("---Consume configuration as an object---");
    // Construct configuration object from loaded key-values with trimmed keys.
    const config = settings.constructConfigurationObject();
    // Use dot-notation to access configuration
    console.log("config.greeting:", config.greeting);   // config.greeting: Hello World
    console.log("config.json:", config.json);           // config.json: { myKey: 'myValue' }
}

run()

執行應用程式

  1. 設定 環境變數。

    將名為 AZURE_APPCONFIG_ENDPOINT 的環境變數設定為 應用程式組態 存放區端點,該端點位於 Azure 入口網站 的市集概觀底下

    如果您使用 Windows 命令提示字元,請執行下列命令,然後重新啟動命令提示字元以讓變更生效:

    setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"
    

    如果您使用 PowerShell,請執行下列命令:

    $Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
    

    如果您使用 macOS 或 Linux,請執行下列命令:

    export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    
  2. 正確設定環境變數之後,請執行下列命令,在本機執行應用程式:

    node app.js
    

    針對每個範例,您應該會看見下列輸出:

    範例 1

    Sample 1: Load key-values with default selector
    ---Consume configuration as a Map---
    settings.get("message"): Message from Azure App Configuration
    settings.get("app.greeting"): Hello World
    settings.get("app.json"): { myKey: 'myValue' }
    ---Consume configuration as an object---
    config.message: Message from Azure App Configuration
    config.app.greeting: Hello World
    config.app.json: { myKey: 'myValue' }
    

    範例 2

    Sample 2: Load specific key-values using selectors
    ---Consume configuration as a Map---
    settings.has("message"): false
    settings.has("app.greeting"): true
    settings.has("app.json"): true
    ---Consume configuration as an object---
    config.message: undefined
    config.app.greeting: Hello World
    config.app.json: { myKey: 'myValue' }
    

    範例 3

    Sample 3: Load key-values and trim prefix from keys
    ---Consume configuration as a Map---
    settings.get("greeting"): Hello World
    settings.get("json"): { myKey: 'myValue' }
    ---Consume configuration as an object---
    config.greeting: Hello World
    config.json: { myKey: 'myValue' }
    

清除資源

如果您不想繼續使用本文中建立的資源,請刪除在此處建立的資源群組,以避免產生費用。

重要

刪除資源群組是無法回復的動作。 資源群組和其中的所有資源都將被永久刪除。 請確定您不會誤刪錯誤的資源群組或資源。 如果您是在包含需保留其他資源的資源群組內部,建立本文的資源,則可以從每個資源各自的窗格中個別刪除每個資源,而不必刪除整個資源群組。

  1. 登入 Azure 入口網站,然後選取 [資源群組]
  2. 在 [依名稱篩選] 方塊中,輸入您資源群組的名稱。
  3. 在結果清單中,選取資源群組名稱以查看概觀。
  4. 選取 [刪除資源群組]
  5. 系統將會要求您確認是否刪除資源群組。 輸入您資源群組的名稱以進行確認,然後選取 [刪除]

不久後,系統便會刪除該資源群組及其所有的資源。

下一步

在本快速入門中,您建立了新的應用程式組態存放區,並了解如何在 Node.js 應用程式中使用應用程式組態 JavaScript 提供者存取索引鍵/值。 若要了解如何將應用程式設定為以動態方式重新整理組態設定,請繼續進行下一個教學課程。