練習 - 探索輸入和輸出繫結類型

已完成

在此練習中,我們會建立函式,該函式會在收到 HTTP 要求時執行,而且會藉由傳回訊息來回應每個要求。

請查看以下進階說明,瞭解我們要建置的項目。

[程式碼和測試] 窗格的螢幕擷取畫面,其中顯示 HTTP 觸發程序函式範本的預設程式碼。

參數 req觸發程序繫結,而參數 res 則是輸出繫結。 或許可以將這些參數視為「要求」和「回應」的縮寫。

[程式碼和測試] 窗格的螢幕擷取畫面,其中顯示 HTTP 觸發程序函式範本的預設程式碼。

參數 Request觸發程序繫結,而參數 Response 則是輸出繫結

建立函式應用程式

讓我們建立可在此課程模組中使用的函式應用程式。 函式應用程式可讓您將多個函式以邏輯單位分組,以方便您管理、部署和共用資源。

  1. 使用您用來啟動沙箱的相同帳戶來登入 Azure 入口網站

  2. 在資源功能表或 [首頁] 頁面,選取 [建立資源]。 [建立資源] 窗格隨即會顯示。

  3. 在 [建立資源] 功能表中,選取 [計算],然後在結果清單中選取 [函式應用程式]。 您可能需要在 [搜尋服務和市集] 視窗中搜尋函式應用程式

  4. 選取 [取用],然後選取 [選取] 按鈕。 [建立函數應用程式] 頁面隨即出現。

  5. 在 [基本] 索引標籤上,為每個設定輸入下列值。

    設定 Description
    專案詳細資料
    訂用帳戶 指引訂用帳戶 您要用於此練習的 Azure 訂用帳戶。
    資源群組 從下拉式清單選取 [沙箱資源群組名稱] 沙箱的資源群組。
    執行個體詳細資料
    函數應用程式名稱 輸入全域唯一名稱 此名稱可識別新的函式應用程式。 有效字元是 a-z0-9-
    執行階段堆疊 從下拉式清單中,選取 [Node.js] 此課程模組的範例程式碼是以 JavaScript 撰寫。
    版本 接受預設 此練習使用預設值已足夠。
    區域 從下拉式清單中,選取 [位置] 選取最靠近區域。
  6. 接受所有其他選項的預設值。 選取 [檢閱 + 建立] 來驗證您的設定,然後選取 [建立] 來佈建和部署函式應用程式。

  7. 部署可能需要一些時間。 在帳戶名稱旁邊的全域控制項中,選取 [通知] 圖示,並注意 [部署成功] 訊息。

  8. 在函式部署完成時,選取 [前往資源]。 隨即顯示函式應用程式的 [概觀] 窗格。

  1. 使用啟用沙箱時所用的相同帳戶來登入 Azure 入口網站

  2. 在資源功能表或 [首頁] 頁面,選取 [建立資源]。 [建立資源] 窗格隨即會顯示。

  3. 在 [建立資源] 功能表中,選取 [計算],然後在結果清單中選取 [函式應用程式]。 您可能需要在 [搜尋服務和市集] 視窗中搜尋函式應用程式

  4. 選取 [取用],然後選取 [選取] 按鈕。 [建立函數應用程式] 頁面隨即出現。

  5. 在 [基本] 索引標籤上,為每個設定輸入下列值。

    設定 Description
    專案詳細資料
    訂用帳戶 指引訂用帳戶 您要用於此練習的 Azure 訂用帳戶。
    資源群組 從下拉式清單選取 [沙箱資源群組名稱] 沙箱的資源群組。
    執行個體詳細資料
    函數應用程式名稱 輸入全域唯一名稱 此名稱可識別新的函式應用程式。 有效字元是 a-z0-9-
    執行階段堆疊 從下拉式清單中,選取 [PowerShell Core] 此課程模組的範例程式碼是以 PowerShell 撰寫。
    版本 接受預設 此練習使用預設值已足夠。
    區域 從下拉式清單中,選取 [位置] 選取最靠近區域。
  6. 接受所有其他選項的預設值。 選取 [檢閱 + 建立] 來驗證您的輸入,然後選取 [建立] 來佈建和部署函式應用程式。

  7. 部署可能需要一些時間。 在帳戶名稱旁邊的全域控制項中,選取 [通知] 圖示,並注意 [部署成功] 訊息。

  8. 在函式部署完成時,選取 [前往資源]。 隨即顯示函式應用程式的 [概觀] 窗格。

提示

如果在 Azure 入口網站中尋找您的函式應用程式時發生問題,請了解如何在 Azure 入口網站中將函式應用程式新增至您的最愛

建立函式

既然我們已經有函式應用程式,現在正是建立函式的時機。 每個函式都有啟動它的觸發程序。 在本課程模組中,我們會使用預先定義的範本來定義 HTTP 觸發程序。

  1. 在 [概觀] 頁面上的 [函式] 索引標籤中,選取 [在 Azure 入口網站中建立] 底下的 [建立函式] 按鈕。

  2. [建立函式] 窗格隨即出現。

    [建立函式] 窗格的螢幕擷取畫面。

  3. 在 [選取範本] 區段中,選取 [HTTP 觸發程序] 範本,然後選取 [下一步]

  4. 在 [範本詳細資料] 區段中,確認下列設定。

    • 在 [函式名稱] 文字輸入框中,使用預設名稱 HttpTrigger1。 Azure 會自動為您建立的函式建立唯一名稱。 您可選擇不同的名稱,但記得要使用有意義的名稱。

    • 在 [授權層級] 文字方塊中,使用預設值 [函式]。 授權層級可決定要求上必須出示哪些金鑰,才能執行要求。 [函式] 授權層級需要函式專屬的金鑰,我們可在建立函式後找到此金鑰。

  5. 選取 建立。 當觸發程序函式傳播至函式應用程式時,[函式應用程式] 的 [函式] 窗格隨即出現,其中列出 HttpTrigger1

  6. 在命令列中,選取 [取得函式 URL]。 [取得函式 URL] 對話方塊隨即顯示。

  7. 在下拉式清單中,選取 [預設 (函式金鑰)]、選取 URL 結尾的 [複製到剪貼簿] 圖示,然後選取 [確定] 來關閉對話方塊。

  8. 在新瀏覽器索引標籤的網址列中,貼上您複製的函式 URL。 按 Enter 鍵,以在您的瀏覽器中執行要求。 函式應用程式初始化時,回應可能需要幾分鐘的時間。 若您收到逾時錯誤,請重新整理以重新傳送要求。

    請參考瀏覽器中顯示的下列範例,當函式回應時,您應會看到類似的輸出。

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. 將以下查詢字串 &name=Joe 新增至 URL 的結尾。 您的結果 URL 應該類似下列範例:

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

  10. Enter 鍵,以在您的瀏覽器中執行要求。 請參考瀏覽器中顯示的下列範例,當函式回應時,您應會看到類似的輸出。

    Hello, Joe. This HTTP triggered function executed successfully.
    

    如同到目前為止您從此練習所見,您必須在建立函式時定義觸發程序。 每個函式都有單一觸發程序。 在此範例中,我們使用 HTTP 觸發程序,這表示我們的函式會在接收 HTTP 要求時啟動。 範本中的預設實作 (在下列螢幕擷取畫面中以 JavaScript 顯示) 會傳回查詢字串或要求本文中的參數 name 值。 如果未提供任何查詢字串,函式會以訊息回應,要求進行呼叫的人提供一個名稱值。

    預設 HTTP 觸發程序的圖例,其中顯示 HTTP 要求和回應繫結參數。

  11. 在 Azure 入口網站的 [函式] 功能表中,選取 [程式碼 + 測試]

    您函式的 [程式碼 + 測試] 窗格隨即顯示,其中會顯示 index.js 檔案的內容。 您函式的預設 JavaScript 程式碼應該類似於下列範例。

    module.exports = async function (context, req) {
        context.log('JavaScript HTTP trigger function processed a request.');
    
        const name = (req.query.name || (req.body && req.body.name));
        const responseMessage = name
            ? "Hello, " + name + ". This HTTP triggered function executed successfully."
            : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
    
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: responseMessage
        };
    }
    
  12. 讓我們很快地查看函式的其他檔案,function.json 設定檔。 從程式碼區塊上方的檔案路徑中的下拉式清單選取 [function.json],以存取此檔案。 設定資料會顯示在下列 JSON 清單中。

    {
        "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req",
            "methods": [
            "get",
            "post"
            ]
        },
        {
            "type": "http",
            "direction": "out",
            "name": "res"
        }
      ]
    }
    

    此函式具有名為 req、類型為 httpTrigger觸發程序繫結,以及名為 res、類型為 http 的輸出繫結。

在函式的上述程式碼中,我們看到了透過 req 參數存取了傳入 HTTP 要求的承載。 同樣地,我們藉由設定 res 參數傳送了 HTTP 回應。 繫結確實能為我們處理一些較繁重的工作!

既然我們有了函式應用程式,就讓我們建立函式。 每個函式都有啟動它的觸發程序。 在本課程模組中,我們會使用範本來建立 HTTP 觸發程序。

  1. 在 [概觀] 頁面上的 [函式] 索引標籤中,選取 [在 Azure 入口網站中建立] 底下的 [建立函式] 按鈕。

  2. [建立函式] 窗格隨即出現。

  3. 在 [選取範本] 區段中,選取 [HTTP 觸發程序] 範本,然後選取 [下一步]

  4. 在 [範本詳細資料] 區段中,確認下列設定。

    • 在 [函式名稱] 文字輸入框中,使用預設名稱 HttpTrigger1。 當您建立函式時,Azure 會自動提供唯一名稱。 您可選擇不同的名稱,但記得要使用有意義的名稱。

    • 在 [授權層級] 文字方塊中,接受預設值 [函式]。 授權層級可決定要求上必須出示哪些金鑰,才能執行要求。 [函式] 需要函式專屬的金鑰。

      [新增函式] 窗格的螢幕擷取畫面。

  5. 選取 建立。 您 [函式] 的 [HttpTrigger1] 窗格隨即出現。

  6. 在命令列中,選取 [取得函式 URL]。 [取得函式 URL] 對話方塊隨即顯示。

  7. 從下拉式清單中選取 [預設 (函式金鑰)]、選取 URL 結尾的 [複製到剪貼簿] 圖示,然後選取 [確定] 以關閉對話方塊。

  8. 在新瀏覽器索引標籤的網址列中,貼上您複製的函式 URL。 按 Enter 鍵,以在您的瀏覽器中執行要求。 函式應用程式初始化時,回應可能需要幾分鐘的時間。 若您收到逾時錯誤,請重新整理以重新傳送要求。

    請參考瀏覽器中顯示的下列範例,當函式回應時,您應會看到類似的輸出。

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. 將查詢字串 &name=Joe 新增至 URL 的結尾。 您的結果 URL 應該類似下列範例:

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

  10. Enter 鍵,以在您的瀏覽器中執行要求。 請參考瀏覽器中顯示的下列範例,當函式回應時,您應會看到類似的輸出。

    Hello, Joe. This HTTP triggered function executed successfully.
    

    如同到目前為止您從此練習所見,您必須在建立函式時定義觸發程序。 每個函式都有單一觸發程序。 在此範例中,我們使用 HTTP 觸發程序,這表示我們的函式會在接收 HTTP 要求時啟動。 範本中的預設實作 (在下列螢幕擷取畫面中以 PowerShell 顯示) 會使用 Push-OutputBinding Cmdlet,以查詢字串或要求本文中的 name 參數值進行回應。 如果未提供任何字串,函式會以訊息回應,提示進行呼叫的人提供一個名稱值。

    HTTP 要求的 [程式碼和測試] 窗格,其中顯示回應和各自的繫結參數。

  11. 在 [函式] 功能表中,選取 [程式碼 + 測試]。 您函式的 [程式碼 + 測試] 窗格隨即顯示,其中顯示 run.ps1 檔案的內容。

    您函式的預設 PowerShell 程式碼應該類似於下列範例。

    using namespace System.Net
    
    # Input bindings are passed in via param block.
    param($Request, $TriggerMetadata)
    
    # Write to the Azure Functions log stream.
    Write-Host "PowerShell HTTP trigger function processed a request."
    
    # Interact with query parameters or the body of the request.
    $name = $Request.Query.Name
    if (-not $name) {
        $name = $Request.Body.Name
    }
    
    $body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
    
    if ($name) {
        $body = "Hello, $name. This HTTP triggered function executed successfully."
    }
    
    # Associate values to output bindings by calling 'Push-OutputBinding'.
    Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body = $body
    })
    
  12. 讓我們很快地查看函式的其他檔案,function.json 設定檔。 從檔案路徑下拉式清單中選取 function.json,以此開啟該檔案。 設定資料會顯示在下列 JSON 清單中。

    {
      "bindings": [
        {
          "authLevel": "function",
          "type": "httpTrigger",
          "direction": "in",
          "name": "Request",
          "methods": [
            "get",
            "post"
          ]
        },
        {
          "type": "http",
          "direction": "out",
          "name": "Response"
        }
      ]
    }
    

    如您所見,此函式具有名為 Request、類型為 httpTrigger 的觸發程序繫結,以及名為 Response、類型為 http 的輸出繫結。 在函式的上述程式碼中,我們看到如何透過 Request 參數,存取傳入 HTTP 要求的承載。 同樣地,我們只要設定 Response 參數,就可以傳送 HTTP 回應。 繫結確實能為我們處理一些較繁重的工作。

探索繫結類型

  1. 在 [函式] 功能表中,選取 [整合]。 您函數的 [整合] 窗格隨即出現。

    請注意,已經定義觸發程序和輸出繫結,如下圖所示。 整合檢視會調整成最適合螢幕的寬度和高度。 如果您的螢幕夠寬,則可水平顯示相同資訊。

    垂直流程圖表的螢幕擷取畫面,其中顯示觸發程序、導致函式的輸出和導致輸出的函式。

    您可以看到,我們無法新增「一個」以上的觸發程序。 若要變更函式的觸發程序,您需要刪除觸發程序並建立新的觸發程序。 不過,[輸入] 和 [輸出] 區段可讓您新增多個繫結,因此要求可以接受多個輸入值並傳回多個輸出值。

  2. 在 [輸入] 方塊中,選取 [新增輸入]。 [建立輸入] 窗格隨即出現。 選取 [繫結類型] 的下拉式清單,以便檢視所有可能的輸入繫結類型清單。

    [新增輸入] 選項的螢幕擷取畫面。

    請花一些時間考慮如何在解決方案中使用每個輸入繫結。

    稍後在此課程模組中,我們會新增輸入繫結,但現在,請選取 [取消] 以關閉此窗格。

  3. 在 [輸出] 方塊中,選取 [新增輸出]。 [建立輸出] 窗格隨即出現。 選取 [繫結類型] 的下拉式清單,以便檢視所有可能的輸出繫結類型清單。

    [新增輸出] 選項的螢幕擷取畫面。

    如您所見,有數種輸出繫結類型。 稍後在此課程模組中,我們會新增輸出繫結,但現在,請選取 [取消] 以關閉此窗格。

  1. 在 [函式] 功能表中,選取 [整合]。 您函數的 [整合] 窗格隨即出現。

    請注意,已經定義觸發程序和輸出繫結,如下圖所示。 整合檢視會調整成最適合螢幕的寬度和高度。 如果您的螢幕不夠寬,則可垂直顯示相同資訊。

    水平流程圖表的螢幕擷取畫面,其中顯示觸發程序、導致函式的輸人和導致輸出的函式。

    您可以看到,我們無法新增「一個」以上的觸發程序。 若要變更函式的觸發程序,您需要刪除觸發程序並建立新的觸發程序。 不過,[輸入] 和 [輸出] 區段可讓您新增多個繫結,因此函式可接受多個輸入值並傳回多個輸出值。

  2. 在 [輸入] 方塊中,選取 [新增輸入]。 [建立輸入] 窗格隨即出現。 選取 [繫結類型] 的下拉式清單,以便檢視所有可能的輸入繫結類型清單。

    [新增輸入] 選項的螢幕擷取畫面。

    請花一些時間考慮如何在解決方案中使用每個輸入繫結。 有許多可能性可供選擇。

    稍後在此課程模組中,我們會新增輸入繫結,但現在,請選取 [取消] 以關閉此窗格。

  3. 在 [輸出] 方塊中,選取 [新增輸出]。 [建立輸出] 窗格隨即出現。 選取 [繫結類型] 的下拉式清單,以便檢視所有可能的輸出繫結類型清單。

    [新增輸出] 選項的螢幕擷取畫面。

    如您所見,有數種輸出繫結類型。 稍後在此課程模組中,我們會新增輸出繫結,但現在,請選取 [取消] 以關閉此窗格。

到目前為止,我們已了解如何建立函式應用程式,並將函式新增至其中。 我們看到執行中的簡單函式,也就是在進行 HTTP 要求時執行的函式。 我們也已探索 Azure 入口網站,以及可供函式使用的輸入和輸出繫結類型。 在下一個單元中,我們將使用輸入繫結從資料庫讀取文字。