你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Functions 支持下的 Azure Static Web Apps 中的 API 支持

前端 Web 应用程序通常为数据和服务调用后端 API。 默认情况下,Azure Static Web Apps通过 Azure Functions 提供内置无服务器 API 终结点。

Static Web Apps 中的 Azure Functions API 在托管计划的基础上提供两种可能的配置:

  • 托管函数:默认情况下,静态 Web 应用的 API 是一种由 Azure Static Web Apps 托管和部署的 Azure Functions 应用程序,并且会受到一些限制。

  • 创建自己的函数:(可选)可以提供任何计划类型的现有Azure Functions应用程序,其中包括Azure Functions的所有功能。 使用此配置,用户需负责单独部署此 Functions 应用。

下表对比了使用托管函数和现有函数之间的差异。

功能 托管函数 创建自己的函数
访问 Azure Functions 触发器及绑定 仅限 HTTP 全部
支持的 Azure Functions 运行时1 请参阅支持的语言和运行时 全部
支持的 Azure Functions 托管计划 消耗 消耗
高级
专属
集成安全性,可直接访问用户身份验证和基于角色的授权数据
路由集成,可向 Web 应用安全地提供 /api 路由,而无需自定义 CORS 规则。
Durable Functions 编程模型
托管标识
Azure 应用服务身份验证和授权令牌管理
在 Azure Static Web Apps 之外可用的 API 函数
密钥保管库 引用

1 若要在托管函数中指定运行时版本,请向前端应用添加配置文件并设置 apiRuntime 属性。 支持受 Azure Functions 语言运行时支持策略的约束。

用于Static Web Apps的 API 选项包括以下Azure服务:

有关详细信息,请参阅 API 概述

配置

API 终结点通过 api 路由向 Web 应用提供。

托管函数 创建自己的函数
虽然 /api 路由已固定,但你可以控制托管函数应用的源代码文件夹位置。 可以通过编辑工作流 YAML 文件来改变此位置,该文件位于存储库的 .github/workflows 文件夹中的。 /api 路由发出的请求将发送到现有Azure Functions应用。

故障排除和日志

仅当添加 Application Insights 时,日志才可用。

托管函数 创建自己的函数
通过在静态 Web 应用上启用 Application Insights 来开启日志记录。 通过在Azure Functions应用上启用 Application Insights 来启用日志记录。

约束

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

托管函数 创建自己的函数
  • 触发器和绑定仅限于 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 应用部署。

后续步骤