.NET 6独立函数如何修改OpenAPI默认URL路径
修改.NET 6独立函数中OpenAPI/Swagger的路由前缀
在.NET 6独立函数模式下,无法直接操作ASP.NET Core的app对象配置Swagger路由,你可以通过注册自定义IOpenApiRoutePrefixProvider服务的方式,修改OpenAPI相关接口的路由前缀,实现将Swagger路径挂载到函数路由下的需求。
步骤1:实现自定义路由前缀提供类
创建一个实现IOpenApiRoutePrefixProvider接口的类,返回目标路由前缀(比如api/FunctionName):
using Microsoft.Azure.Functions.Worker.Extensions.OpenApi.Core.Abstractions; public class CustomOpenApiRoutePrefixProvider : IOpenApiRoutePrefixProvider { public string RoutePrefix => "api/FunctionName"; }
步骤2:在Program.cs中注册服务
修改原有配置,添加自定义服务注册,替换默认的IOpenApiRoutePrefixProvider实现:
var host = new HostBuilder() .ConfigureFunctionsWorkerDefaults(worker => worker.UseNewtonsoftJson()) .ConfigureServices(services => { // 注册自定义路由前缀提供器 services.AddSingleton<IOpenApiRoutePrefixProvider, CustomOpenApiRoutePrefixProvider>(); services.AddSingleton<IOpenApiConfigurationOptions>(_ => { var options = new OpenApiConfigurationOptions() { Info = new OpenApiInfo() { Version = "1.0.0", Title = "Function Name", Description = "This is the name of the function", Contact = new OpenApiContact() { Name = "Codebug" } }, Servers = DefaultOpenApiConfigurationOptions.GetHostNames(), OpenApiVersion = OpenApiVersionType.V2, IncludeRequestingHostName = true, ForceHttps = false, ForceHttp = false, }; return options; }); }) .Build(); host.Run();
验证效果
启动函数后,控制台输出的OpenAPI相关URL会更新为:
RenderOAuth2Redirect: [GET] http://localhost:7295/api/FunctionName/oauth2-redirect.html RenderOpenApiDocument: [GET] http://localhost:7295/api/FunctionName/openapi/{version}.{extension} RenderSwaggerDocument: [GET] http://localhost:7295/api/FunctionName/swagger.{extension} RenderSwaggerUI: [GET] http://localhost:7295/api/FunctionName/swagger/ui
至此,Swagger相关路径已成功挂载到函数路由/api/FunctionName下。
内容的提问来源于stack exchange,提问作者imran chowdhury
相关产品推荐
相关产品推荐

