NetCore API 版本控制
1、添加API枚举类型
public enum ApiVersion { /// <summary> /// v1版本 /// </summary> V1 = 1, /// <summary> /// v2版本 /// </summary> V2 = 2 } |
2、注册Swagger服务
public void ConfigureServices(IServiceCollection services) { #region 注册Swagger服务 services.AddSwaggerGen(options => { typeof (ApiVersion).GetEnumNames().ToList().ForEach(version => { options.SwaggerDoc(version, new OpenApiInfo() { Version = version, Title = $ "webapi {version}" , Description = $ "Asp.NetCore Web API {version}" }); }); }); #endregion services.AddControllers(); } |
3、启用Swagger
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } //启用Swagger中间件 app.UseSwagger(); app.UseSwaggerUI(options => { typeof (ApiVersion).GetEnumNames().ToList().ForEach(version => { options.SwaggerEndpoint($ "/swagger/{version}/swagger.json" , version); }); }); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } |
4、在控制器中使用ApiExplorerSettings标记
namespace WebApi.Controllers.V1 { [Route( "api/v1/[controller]" )] [ApiExplorerSettings(GroupName = "V1" )] [ApiController] public class TestController : ControllerBase { [HttpGet] [Route( "Get" )] public string Get() { return "123456 v1" ; } } } |
namespace WebApi.Controllers.V2 { [Route( "api/v2/[controller]" )] [ApiExplorerSettings(GroupName = "V2" )] [ApiController] public class TestController : ControllerBase { [HttpGet] [Route( "Get" )] public string Get() { return "123456 v2" ; } } } |
5、运行效果
参考:
https://www.cnblogs.com/LuoCore/p/15325256.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?