Azure Static Web Apps with Azure Functions 中的 API 支援

前端網頁應用程式經常呼叫後端 API 來處理資料與服務。 預設情況下,Azure Static Web Apps 透過 Azure Functions 提供內建的無伺服器 API 端點。

Static Web Apps 中的Azure Functions API 依據 hosting plan 提供兩種可能的配置:

  • Managed functions:靜態網頁應用程式的 API 預設是由Azure Static Web Apps管理與部署的Azure Functions應用程式,並帶有一些限制。

  • 自備功能:你可以選擇性地提供任何計畫類型的現有Azure Functions應用程式,包含Azure Functions的所有功能。 使用此設定時,您必須負責處理 Functions 應用程式的個別部署。

下表對比使用受管理的函式和現有函式之間的差異。

功能 受控 Functions 自備 Functions
存取 Azure Functions 觸發器與綁定 僅限 HTTP 全部
支援 Azure Functions runtimes1 請參閱 支援的語言和運行時間 全部
支援Azure Functions 主機計畫 使用量 使用量
進階
專用
整合式安全性 ,可直接存取使用者驗證和角色型授權數據
路由整合 ,可 /api 安全地將路由提供給 Web 應用程式,而不需要自訂 CORS 規則。
Durable Functions程式設計模型
受控識別
Azure App 服務 認證與授權 令牌管理
API 函數可在 Azure Static Web Apps 外部使用
金鑰保存庫參考資料

1 若要在 Managed 函式中指定執行時間版本,請將組態檔新增至前端應用程式並設定 apiRuntime 屬性。 支援受 Azure Functions 語言執行時支援政策 約束。

Static Web Apps 的 API 選項包括以下 Azure 服務:

如需詳細資訊, 請參閱 API 概觀

組態

API 端點可透過 api 路由提供給 Web 應用程式。

受控 functions 自備 functions
雖然 /api 路由是固定的,但您可以控制受管函數應用程式的原始碼資料夾位置。 您可以編輯存放庫 .github/workflows 資料夾中的工作流程 YAML 檔案來變更此位置 發送到 /api 路由的請求將被傳送到您現有的 Azure Functions 應用程式。

疑難解答和記錄

只有在您新增 Application Insights 時,才能使用記錄。

受控 functions 自備 functions
在靜態 Web 應用程式上啟用 Application Insights,以開啟記錄功能。 啟用 Azure Functions 應用程式中的 Application Insights 來開啟日誌功能。

限制

除了Static Web Apps API constraints外,以下限制也適用於Azure Functions API:

受控 functions 自備 functions
  • 觸發程式和系結僅限於 HTTP
  • Azure Functions 應用程式必須在 Node.js 12、Node.js 14、Node.js 16、Node.js 18、Node.js 20(預覽版)、.NET Core 3.1、.NET 6.0、.NET 7.0、.NET 8.0、Python 3.8、Python 3.9 或 Python 3.10 中。
  • 某些應用程式設定是由服務管理,因此運行時間會保留下列前置詞:
    • APPSETTING_、AZUREBLOBSTORAGE_、AZUREFILESSTORAGE_、AZURE_FUNCTION_、CONTAINER_、DIAGNOSTICS_、DOCKER_、FUNCTIONS_、IDENTITY_、MACHINEKEY_、MAINSITE_、MSDEPLOY_、SCMSITE_、SCM_、WEBSITES_、WEBSITE_、WEBSOCKET_、AzureWeb
  • 服務會在內部使用某些應用程式標籤。 因此,保留下列標記:
    • AccountId、EnvironmentId、FunctionAppId
  • 您必須負責管理 Functions 應用程式部署。

下一步