NetCore 配置Swagger

  • NetCore 配置Swagger已关闭评论
  • 144 次浏览
  • A+
所属分类:.NET技术
摘要

2.1.生成项目xml:选中项目 / 右键 / 属性 / 生成 / 输出 / 选中xml文档文件2.2.system_v1 :必须唯一不重复,且【options.SwaggerDoc(“system_v1 “】必须与【options.SwaggerEndpoint(“/swagger/system_v1 /】一致,不然会异常【Failed to load API definition; Fetch error: response status is 404 /swagger/system_v1/swagger.json 】


1.添加Nuget

install-package Swashbuckle.AspNetCore -project XXX -version 6.4.0

2.添加静态类扩展方法

2.1.生成项目xml:选中项目 / 右键 / 属性 / 生成 / 输出 / 选中xml文档文件

2.2.system_v1:必须唯一不重复,且【options.SwaggerDoc("system_v1"】必须与【options.SwaggerEndpoint("/swagger/system_v1/】一致,不然会异常【Failed to load API definition; Fetch error: response status is 404 /swagger/system_v1/swagger.json

 1     /// <summary>  2     /// Swagger 静态类  3     /// </summary>  4     public static class SwaggerExtend  5     {  6         /// <summary>  7         /// 添加服务: swagger  8         /// </summary>  9         /// <param name="services"></param> 10         /// <returns></returns> 11         public static void AddCustSwagger(this IServiceCollection services) 12         { 13             var version = "V1.0"; 14             var apiName = "XXX系统"; 15             services.AddSwaggerGen(options => 16             { 17                 options.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); 18             19                 options.SwaggerDoc("system_v1", new OpenApiInfo 20                 { 21                     Version = version, 22                     Title = $"{apiName} API", 23                     Description = $"{apiName} {version} 接口服务" 24                 }); 25  26                 //  获取应用程序所在目录 27                 var basePath = Path.GetDirectoryName(typeof(SwaggerExtend).Assembly.Location); 28                 var xmlPath = Path.Combine(basePath, "ProjectName.xml"); 29                 //  swagger界面默认只显示 方法&字段 注释,不显示 控制器注释 30                 //  第二个参数为true, 则是controller的注释 31                 //options.IncludeXmlComments(xmlPath); 32                 options.IncludeXmlComments(xmlPath, true); 33             }); 34         } 35  36         /// <summary> 37         /// 添加中间件: swagger 38         /// </summary> 39         /// <param name="app"></param> 40         public static void UseCustSwagger(this IApplicationBuilder app) 41         { 42             app.UseSwagger(); 43             app.UseSwaggerUI(options => 44             { 45                 options.SwaggerEndpoint("/swagger/system_v1/swagger.json", "系统API"); 46                 //  默认路径为:/swagger/index.html 47                 //  路由前缀 - 设置为空,可直接跳转到swagger页面:/index.html 48                 //  api测试可设置为空,部署时容易与前端路由冲突 49                 options.RoutePrefix = string.Empty; 50             }); 51         }  52     }

3.StartUp注册服务,添加中间件

        public void ConfigureServices(IServiceCollection services)         {             services.AddCustSwagger();         }          public void Configure(IApplicationBuilder app, IWebHostEnvironment env)         {             app.UseCustSwagger();         }