关于Asp.Net Core如何更完美地配置swagger(三)
关于.netcore 模块化框架系列文章
极简实用的Asp.NetCore模块化框架决定免费开源了(一)
ASP.NET Core如何自动生成小写的破折号路由(二)
目的
说到Asp.Net Core配置swagger,网上的文章数不胜数,这里重新写篇文章一方面主要在于加强自己的学习,另一方面做好swagger的授权验证配置。
配置
nuge引用两个包
1、Swashbuckle.AspNetCore
2、Swashbuckle.AspNetCore.Filters
3、下面附上我的swagger扩展类
public static class SwaggerExtesion { public static void AddSwaggerSetup(this IServiceCollection services) { services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = $"接口文档——{RuntimeInformation.FrameworkDescription}", Version = "v1", Description = "HTTP API" }); c.OrderActionsBy(o => o.RelativePath); var basePath = PlatformServices.Default.Application.ApplicationBasePath; var files = Directory.GetFiles(basePath, "*.xml"); foreach (var file in files) { c.IncludeXmlComments(file, true); if (file.Contains("ShenNius.Share.Models.xml")) { c.IncludeXmlComments(file); } } //var baseModelPath = AppContext.BaseDirectory; //var xmlModelPath = Path.Combine(basePath, "ShenNius.Share.Models.xml");//这个就是Model层的xml文件名 //c.IncludeXmlComments(xmlModelPath); c.CustomOperationIds(apiDesc => { return apiDesc.TryGetMethodInfo(out MethodInfo methodInfo) ? methodInfo.Name : null; }); // TODO:一定要返回true! c.DocInclusionPredicate((docName, description) => { return true; }); ////https://github.com/domaindrivendev/Swashbuckle.AspNetCore // 开启加权小锁 c.OperationFilter<AddResponseHeadersFilter>(); c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>(); //// 在header中添加token,传递到后台 c.OperationFilter<SecurityRequirementsOperationFilter>(); // 很重要!这里配置安全校验,和之前的版本不一样 c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme { Description = "JWT授权(数据将在请求头中进行传输) 直接在下框中输入Bearer {token}(注意两者之间是一个空格)\"", Name = "Authorization",//jwt默认的参数名称 In = ParameterLocation.Header,//jwt默认存放Authorization信息的位置(请求头中) Type = SecuritySchemeType.ApiKey, Scheme = "Bearer", }); // c.AddFluentValidationRules(); c.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme{ Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, new[] { "readAccess", "writeAccess" } } }); }); } public static void UseSwaggerMiddle(this IApplicationBuilder app) { app.UseSwagger(); app.UseSwaggerUI(c => { c.DefaultModelExpandDepth(2); c.DefaultModelRendering(ModelRendering.Example); c.DefaultModelsExpandDepth(-1); c.DisplayRequestDuration(); c.DocExpansion(DocExpansion.None); c.EnableDeepLinking(); c.EnableFilter(); c.MaxDisplayedTags(int.MaxValue); c.ShowExtensions(); c.EnableValidator(); c.SwaggerEndpoint("/swagger/v1/swagger.json", "ShenNius API v1"); c.RoutePrefix = string.Empty; }); } }
4、在OnConfigureServices方法中注入context.Services.AddSwaggerSetup();
说明
关于上面的配置是关于我ShenNius.Framework和swagger的结合,只是和.net core中的配置略有不同而已。
暂时就写到这里吧,每次文章写的很长,反而很多人看不下去,我将功能点拆分出来,每次尽量只耽误3、4分钟的样子,点进文章之后能快速看到核心的东西,保证有收获。
作者:realyrare
出处:https://www.cnblogs.com/mhg215/
声援博主:如果您觉得文章对您有帮助,请点击文章末尾的【关注我】吧!
别忘记点击文章右下角的【推荐】支持一波。~~~///(^v^)\\\~~~ .
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果您有其他问题,也欢迎关注我下方的公众号,可以联系我一起交流切磋!

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器