一、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