Azure Functions HTTP 触发器和绑定概述
Azure Functions 可以通过 HTTP 请求调用,以构建无服务器 API 并响应 Webhook。
操作 | 类型 |
---|---|
通过 HTTP 请求运行函数 | 触发器 |
从函数返回 HTTP 响应 | 输出绑定 |
安装扩展
你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:
函数在独立的 C# 工作进程中执行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南。
扩展的功能因扩展版本而异:
通过安装 NuGet 包版本 3.x 将扩展添加到项目。
注意
.NET 独立中的 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 | 无 | 使你可以在 HTTP 响应中设置自定义标头。 前面的示例将 X-Content-Type-Options 标头添加到响应中,以避免内容类型探查。 此自定义标头适用于函数应用中的所有 HTTP 触发函数。 |
||||||||||
dynamicThrottlesEnabled | true* | 启用时,此设置将导致请求处理管道,以定期检查系统性能计数器(如 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 | 应用到所有路由的路由前缀。 使用空字符串可删除默认前缀。 |