Azure Functions 可以通过 HTTP 请求调用,以构建无服务器 API 并响应 Webhook。
操作 | 类型 |
---|---|
通过 HTTP 请求运行函数 | 触发器 |
从函数返回 HTTP 响应 | 输出绑定 |
安装扩展
你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:
函数在独立的 C# 工作进程中执行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南。
扩展的功能因扩展版本而异:
通过安装 NuGet 包版本 3.x 将扩展添加到项目。
注意
.NET 独立中的 ASP.NET Core 集成需要额外的扩展包
安装捆绑包
若要能够在应用中使用此绑定扩展,请确保项目的根目录中 host.json 文件包含以下 extensionBundle
引用:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
在此示例中,version
[4.0.0, 5.0.0)
值指示 Functions 主机使用至少4.0.0
小于但小于5.0.0
的捆绑包版本,其中包括所有可能的 4.x 版本。 此表示法有效地在 v4.x 扩展捆绑包的最新可用次要版本上维护应用。
如果可能,应使用最新的扩展捆绑包主版本,并允许运行时自动维护最新的次要版本。 可以在 扩展捆绑包发布页上查看最新捆绑包的内容。
如果应用要求使用以前的扩展版本,则可能需要改为指定以前的捆绑包版本。 可以查看 捆绑包版本 ,找到包含此扩展版本的捆绑包,该版本可供应用使用。 有关详细信息,请参阅 Azure Functions 扩展捆绑包。 结束区域
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 | 真* | 启用时,此设置将导致请求处理管道,以定期检查系统性能计数器(如 connections/threads/processes/memory/cpu/etc ),并且如果这些计数器中的任何一个超过内置的高阈值 (80%),请求将以 429 "Too Busy" 响应被拒绝,直到计数器恢复正常水平。*消耗计划中的默认值为 true 。 高级计划和专用计划中的默认值为 false 。 |
||||||||||
hsts | 未启用 |
isEnabled 设置为 true 时,将强制执行 .NET Core 的 HTTP 严格传输安全性 (HSTS) 行为,如 HstsOptions 类中所定义。 上面的示例还将 maxAge 属性设置为 10 天。
hsts 支持的属性包括:
|
||||||||||
maxConcurrentRequests | 100* | 并行执行的 HTTP 函数数目上限。 此值允许你控制并发性,从而帮助管理资源利用率。 例如,某个 HTTP 函数可能使用了大量系统资源(内存/CPU/插槽),从而在并发性过高时导致问题。 或者,某个函数向第三方服务发出出站请求,则可能需要限制这些调用的速率。 在这种情况下,应用限制可能有帮助。 *消耗计划的默认值为 100。 高级计划和专用计划的默认值是无界的 ( -1 )。 |
||||||||||
maxOutstandingRequests | 200* | 在任意给定时间搁置的未完成请求数上限。 此限制包括已排队但尚未开始执行的请求,以及正在执行的所有请求。 超出此限制的任何传入请求将被拒绝,并返回 429“太忙”响应。 允许调用方使用基于时间的重试策略,还可帮助控制最大请求延迟。 此设置仅控制脚本宿主执行路径中发生的排队。 其他队列(例如 ASP.NET 请求队列)仍有效,不受此设置的影响。 *消耗计划的默认值为 200。 高级计划和专用计划的默认值是无界的 ( -1 )。 |
||||||||||
routePrefix | api | 应用到所有路由的路由前缀。 使用空字符串可删除默认前缀。 |