From 4e7716aba8256931814fc4f5778f65722318b582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E6=98=9F=E7=B9=81?= Date: Fri, 7 Nov 2025 13:34:15 +0800 Subject: [PATCH] feat: allow configuring api versioning --- .../ApiVersioningInjectors.cs | 33 ++++++++++++++----- ...hitecture.Ddd.Cqrs.Dapper.SqlServer.csproj | 2 +- ...Infrastructure.CacheProviders.Redis.csproj | 2 +- .../Program.cs | 1 - 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/ApiVersioningInjectors.cs b/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/ApiVersioningInjectors.cs index 4213b10..8e2f086 100644 --- a/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/ApiVersioningInjectors.cs +++ b/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/ApiVersioningInjectors.cs @@ -1,4 +1,5 @@ using Asp.Versioning; +using Asp.Versioning.ApiExplorer; using Asp.Versioning.Conventions; // ReSharper disable once CheckNamespace @@ -13,17 +14,31 @@ public static class ApiVersioningInjectors /// Add API Versioning, use by default. /// /// + /// Versioning Setup. + /// Setups in MVC api versioning. + /// Setups for ApiExplorer. /// - public static IApiVersioningBuilder AddCnblogsApiVersioning(this IServiceCollection services) + public static IApiVersioningBuilder AddCnblogsApiVersioning( + this IServiceCollection services, + Action? versioningSetup = null, + Action? mvcApiVersioningSetup = null, + Action? apiExplorerSetup = null) { services.AddEndpointsApiExplorer(); - return services.AddApiVersioning(o => o.ReportApiVersions = true) - .AddMvc(o => o.Conventions.Add(new VersionByNamespaceConvention())) - .AddApiExplorer( - o => - { - o.GroupNameFormat = "'v'VVV"; - o.SubstituteApiVersionInUrl = true; - }); + return services.AddApiVersioning(o => + { + versioningSetup?.Invoke(o); + }) + .AddMvc(o => + { + o.Conventions.Add(new VersionByNamespaceConvention()); + mvcApiVersioningSetup?.Invoke(o); + }) + .AddApiExplorer(o => + { + o.GroupNameFormat = "'v'VVV"; + o.SubstituteApiVersionInUrl = true; + apiExplorerSetup?.Invoke(o); + }); } } diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.Dapper.SqlServer/Cnblogs.Architecture.Ddd.Cqrs.Dapper.SqlServer.csproj b/src/Cnblogs.Architecture.Ddd.Cqrs.Dapper.SqlServer/Cnblogs.Architecture.Ddd.Cqrs.Dapper.SqlServer.csproj index b0b49aa..622d381 100644 --- a/src/Cnblogs.Architecture.Ddd.Cqrs.Dapper.SqlServer/Cnblogs.Architecture.Ddd.Cqrs.Dapper.SqlServer.csproj +++ b/src/Cnblogs.Architecture.Ddd.Cqrs.Dapper.SqlServer/Cnblogs.Architecture.Ddd.Cqrs.Dapper.SqlServer.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.Redis/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.Redis.csproj b/src/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.Redis/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.Redis.csproj index cde4f08..9ed4215 100644 --- a/src/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.Redis/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.Redis.csproj +++ b/src/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.Redis/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.Redis.csproj @@ -12,7 +12,7 @@ - + diff --git a/test/Cnblogs.Architecture.IntegrationTestProject/Program.cs b/test/Cnblogs.Architecture.IntegrationTestProject/Program.cs index e9a1547..be4708f 100644 --- a/test/Cnblogs.Architecture.IntegrationTestProject/Program.cs +++ b/test/Cnblogs.Architecture.IntegrationTestProject/Program.cs @@ -17,7 +17,6 @@ .AddEventBus(o => o.UseDapr(Constants.AppName)); builder.Services.AddControllers().AddCqrsModelBinderProvider().AddLongToStringJsonConverter(); -// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddCnblogsApiVersioning(); var app = builder.Build();