Azure Functions HTTP 觸發和繫結概觀

Azure Functions 可透過 HTTP 要求叫用,以組建無伺服器 API 並回應 Webhook

動作 類型
從 HTTP 要求執行函式 觸發程序
從函式傳回 HTTP 回應 輸出繫結

安裝擴充功能

您安裝的 NuGet 套件擴充取決於您在函數應用程式中使用的 C# 模式:

函式會在與 Azure Functions 主機相同的處理序中執行。 若要深入了解,請參閱使用 Azure Functions 開發 C# 類別庫函式

擴充的功能會根據擴充版本而有所不同:

藉由安裝此 NuGet 套件 3.x 版本,將擴充新增至您的專案。

安裝搭售方案

從 Azure Functions 2.x 版本開始,HTTP 擴充是擴充搭售方案的一部分,其是由您的 host.json 專案檔所指定。 若要深入了解,請參閱擴充搭售方案

此版本的擴充應該已經可供具有擴充搭售方案 2.x 版本的函數應用程式使用。

host.json 設定

本區段說明在 2.x 版本和更新版本中,可用於此繫結的組態設定。 host.json 檔案中的設定會套用至所有函數應用程式執行個體中的函式。 下面的範例 host.json 檔案僅包含此繫結的 2.x+ 版本設定。 如需 2.x 版本和更新版本中函數應用程式組態設定的詳細資訊,請參閱 Azure Functions 的 host.json 參考

注意

有關 Functions 1.x 中 host.json 的參考,請參閱適用於 Azure Functions 1.x 的 host.json 參考

{
    "extensions": {
        "http": {
            "routePrefix": "api",
            "maxOutstandingRequests": 200,
            "maxConcurrentRequests": 100,
            "dynamicThrottlesEnabled": true,
            "hsts": {
                "isEnabled": true,
                "maxAge": "10"
            },
            "customHeaders": {
                "X-Content-Type-Options": "nosniff"
            }
        }
    }
}
屬性 預設 描述
customHeaders 可讓您在 HTTP 回應中設定自訂標題。 上一個範例會將 X-Content-Type-Options 標題新增至回應,以避免內容類型探查。 此自訂標頭適用于函式應用程式中的所有 HTTP 觸發函式。
dynamicThrottlesEnabled true* 啟用時,此設定會促使要求處理管線以定期檢查系統效能計數器,例如 connections/threads/processes/memory/cpu/etc,而且如果這些計數器中任一個超過內建的高閾值 (80%),則要求會以 429 "Too Busy" 回應遭到拒絕,直到計數器回到正常等級。
*使用量方案的預設為 true。 專用方案中的預設為 false
hsts 未啟用 isEnabled 設定為 true 時,會強制執行 .NET 核心的 HTTP 嚴格傳輸安全性 (HSTS) 行為,如 HstsOptions 類別中所定義。 上述範例也會將 maxAge 屬性設定為 10 天。 hsts 的支援屬性包括:
屬性描述
excludedHosts未新增 HSTS 標題的主機名稱字串陣列。
includeSubDomains布林值指出 Strict-Transport-Security 標題的 includeSubDomain 參數是否為啟用狀態。
maxAge字串定義 Strict-Transport-Security 標題的 max-age 參數。
預先載入布林值指出 Strict-Transport-Security 標題的預先載入參數是否為啟用狀態。
maxConcurrentRequests 100* 要平行執行的 HTTP 函式數目上限。 此值可讓您控制並行以幫助您管理資源使用率。 例如,您可能會有使用大量系統資源 (記憶體/CPU/通訊端) 的 HTTP 函式,以致於並行太高時造成問題。 或者,您可能會有對第三方合作對象服務輸出要求的函式,並需要限制這些呼叫的速率。 在這些情況下,套用節流會有所幫助。
*使用量方案的預設為 100。 專用方案的預設為無界 (-1)。
maxOutstandingRequests 200* 在任何指定時間保留的未完成要求數目上限。 此限制包括已排入佇列但尚未開始執行的要求,以及任何進行中的執行。 會以 429「忙碌」回應來拒絕任何超過此限制的連入要求。 這樣可讓呼叫者採用以時間為基礎的重試策略,並且也協助您控制要求延遲的上限。 此動作只會控制在指令碼主機執行路徑內發生的佇列處理。 其他佇列 (例如 ASP.NET 要求佇列) 仍然有效,且不受此設定的影響。
*使用量方案的預設為 200。 專用方案的預設為無界 (-1)。
routePrefix api 適用於所有路由的路由前置詞。 若要移除預設前置詞,請使用空字串。

下一步