一、Swagger配置/多版本控制


Swagger配置

一、引用SwaggerNuGet包

  Swashbuckle.AspNetCore

 二、代码实现配置

  首先生成XML文档文件,点击项目》右键属性》点击生成》输出一栏 勾选XML文档文件

注:生成的文件要设置属性始终复制,否则发布后文档可能报错;

 

 1 /// <summary>
 2     /// swagger配置项版本控制
 3     /// </summary>
 4     public class SwaggerVersions
 5     {
 6         /// <summary>
 7         /// swagger版本选项
 8         /// </summary>
 9         public enum ApiVersions
10         {
11             v1 = 1,
12             v2 = 2,
13             v3 = 3,
14             v4 = 4,
15             v5 = 5
16         }
17     }

 

 public void ConfigureServices(IServiceCollection services)
{    
            services.AddSwaggerGen(c =>
            {
                #region 分版本的Swagger配置
                //要启用swagger版本控制要在api控制器或者方法上添加特性[ApiExplorerSettings(GroupName = "v1")] v1是版本号
                typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
                {
                    c.SwaggerDoc(version, new OpenApiInfo()
                    {
                        Title = $"{version}:CoreAPIDemo",
                        Version = version,
                        Description = $"通用版本的CoreApi版本{version}"
                    });
                });
                #endregion
                //添加注释  取消注释则无版本控制,需要把上面的注释
                //c.SwaggerDoc("CoreAPIDemo", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "CoreAPIDemo", Version = "v1.1" });
                // 获取xml文件名
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                // 获取xml文件路径
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                // 添加控制器层注释,true表示显示控制器注释
                c.IncludeXmlComments(xmlPath);
            });
} 
 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 {
           app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                //遍历多版本基本上先不用有需求时打开
                typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
                {
                    c.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"{version}");
                });

                //不分版本的Swagger
                //c.SwaggerEndpoint($"/swagger/CoreAPIDemo/swagger.json", "CoreAPIDemo");

            });
 }

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM