Azure Functions HTTP 触发器和绑定概述

Azure Functions 可以通过 HTTP 请求调用,以构建无服务器 API 并响应 Webhook

操作 类型
通过 HTTP 请求运行函数 触发器
从函数返回 HTTP 响应 输出绑定

安装扩展

你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:

函数在与函数主机相同的进程中执行。 若要了解详细信息,请参阅使用 Azure Functions 开发 C# 类库函数

扩展的功能因扩展版本而异:

通过安装 NuGet 包版本 3.x 将扩展添加到项目。

安装捆绑包

从 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 支持的属性包括:
属性说明
excludedHosts未添加 HSTS 标头的主机名的字符串数组。
includeSubDomains布尔值,指示是否启用了 Strict-Transport-Security 标头的 includeSubDomain 参数。
maxAge定义 Strict-Transport-Security 标头的 max-age 参数的字符串。
preload布尔值,指示是否启用了 Strict-Transport-Security 标头的 preload 参数。
maxConcurrentRequests 100* 并行执行的 HTTP 函数数目上限。 此值允许你控制并发性,从而帮助管理资源利用率。 例如,某个 HTTP 函数可能使用了大量系统资源(内存/CPU/插槽),从而在并发性过高时导致问题。 或者,某个函数向第三方服务发出出站请求,则可能需要限制这些调用的速率。 在这种情况下,应用限制可能有帮助。
*消耗计划的默认值为 100。 专用计划的默认值是无限制的 (-1)。
maxOutstandingRequests 200* 在任意给定时间搁置的未完成请求数上限。 此限制包括已排队但尚未开始执行的请求,以及正在执行的所有请求。 超出此限制的任何传入请求将被拒绝,并返回 429“太忙”响应。 允许调用方使用基于时间的重试策略,还可帮助控制最大请求延迟。 此设置仅控制脚本宿主执行路径中发生的排队。 其他队列(例如 ASP.NET 请求队列)仍有效,不受此设置的影响。
*消耗计划的默认值为 200。 专用计划的默认值是无限制的 (-1)。
routePrefix api 应用到所有路由的路由前缀。 使用空字符串可删除默认前缀。

后续步骤