NetCore 配置Swagger
2023-03-31 10:58:08 时间
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(); }
相关文章
- 关于.NET玩爬虫这些事
- DDD实战中如何避免过度设计
- 3D视频聊天、百万比特量子计算机、十倍性能TPU:谷歌在I/O大会上让我们看到了未来
- 为什么 .NET的反射这么慢?
- ASP.NET Core 单元测试之如何 Mock HttpClient.GetStringAsync()
- 在ASP.NET Core中使用百度在线编辑器UEditor
- MVC路由自定义及视图找寻规则
- Microsoft 宣布将停止支持多个 .NET Framework 版本
- ASP.NET Core 单元测试:如何Mock Url.Page()
- 使用AJAX获取Django后端数据
- 一图看懂 ASP.NET Core 中的服务生命周期
- 构建高性能ASP.NET应用的12点建议
- 你了解AJAX吗?TA不是新编程语言而是WEB应用程序技术
- 又一起.NET程序挂死, 用 Windbg 抽丝剥茧式的真实案例分析
- 从一个Demo开始,揭开Netty的神秘面纱
- 从.net转型,聊聊最近一些面试,薪资和想法
- 如何在 ASP.NET Core 中使用内置的 Json 格式化日期 ?
- ASP.NET 5 开发者的五个阶段​​
- 让编程更轻松的 7 个 Visual Studio 扩展
- 对 ASP.NET 异步编程的一点理解