Azure Functions HTTP 觸發程式和系結概觀

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

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

安裝擴充功能

您安裝的延伸模組 NuGet 套件取決於您在函式應用程式中使用的 C# 模式:

函式會在隔離的 C# 背景工作進程中執行。 若要深入瞭解,請參閱 在隔離背景工作程序中執行 C# Azure Functions 的指南。

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

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

注意

.NET Isolated 中 ASP.NET Core 整合需要 額外的擴充套件

安裝套件組合

從 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 none 可讓您在 HTTP 回應中設定自訂標頭。 上一個範例會將 X-Content-Type-Options 標頭新增至回應,以避免內容類型探查。 此自定義標頭適用於函式應用程式中的所有 HTTP 觸發函式。
dynamicThrottlesEnabled * 啟用時,此設定會導致要求處理管線定期檢查系統性能計數器,例如 connections/threads/processes/memory/cpu/etc ,如果其中任何計數器超過內建的高閾值(80%),要求將會遭到 429 "Too Busy" 拒絕,直到計數器(s) 回到正常層級為止。
*取用機制中的預設值為 true。 專用專案中的預設值為 false
hsts 未啟用 當 設定為 時isEnabled會強制執行 .NET Core 的 HTTP Strict Transport Security (HSTS) 行為,如 類別中所HstsOptions定義。true 上述範例也會將 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 適用於所有路由的路由前置詞。 若要移除預設前置詞,請使用空字串。

下一步