如何无需逐个配置Route参数让Azure Functions路由全小写?
无需逐个配置Route参数实现Azure Functions端点路由全小写的方法
针对你提到的场景,无需为每个函数手动配置Route参数就能让所有端点路由自动转为小写,有以下两种可行方案(以.NET隔离进程Azure Functions为例):
方案1:通过host.json全局配置
在项目根目录的host.json文件中添加路由选项配置,开启全局小写路由:
{ "version": "2.0", "extensions": { "http": { "routeOptions": { "lowercaseRoutes": true } } } }
配置完成后,原本默认生成的/api/GetHealth会自动变为/api/gethealth,所有未手动指定Route参数的函数路由都会统一转为小写格式。
方案2:自定义路由名称策略(进阶)
如果需要更灵活的路由命名控制,可以实现自定义的IFunctionNameRouteProvider接口,替换默认的路由生成逻辑:
using Microsoft.Azure.Functions.Worker.Core.Routing; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var host = new HostBuilder() .ConfigureFunctionsWorkerDefaults() .ConfigureServices(services => { services.AddSingleton<IFunctionNameRouteProvider, LowercaseFunctionNameRouteProvider>(); }) .Build(); host.Run(); public class LowercaseFunctionNameRouteProvider : IFunctionNameRouteProvider { public string GetRouteName(FunctionNameRouteContext context) { // 将函数名称转为小写作为路由 return context.FunctionName.Value.ToLowerInvariant(); } }
这种方式可以完全自定义路由生成规则,不仅限于小写转换,还能根据需求调整路由格式。
注意:如果同时配置了
host.json的lowercaseRoutes和自定义路由提供器,自定义逻辑会优先生效。
内容的提问来源于stack exchange,提问作者Shuzheng
相关产品推荐
相关产品推荐

