ASP.NET Core Web API使用静态swagger.json文件

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET Core Web API使用静态swagger.json文件相关的知识,希望对你有一定的参考价值。

前言

ASP.NET Core Web API默认集成了Swashbuckle,可以在运行时显示Swagger UI:

而Swagger UI实际上是解析的动态生成的swagger.json:

app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApplication3 v1"));

其实,部署ASP.NET Core Web API完成后,swagger.json的内容就不会改变了,完全可以用静态文件替代。

实现

创建ASP.NET Core Web API项目,然后安装Swashbuckle CLI:

dotnet tool install SwashBuckle.AspNetCore.Cli

1.生成静态文件

引用Nuget包Swashbuckle.AspNetCore.Annotations,并在项目下创建wwwroot\\swagger\\v1目录,然后编写生成后事件命令行:

dotnet swagger tofile --output ./wwwroot/swagger/v1/swagger.json $(OutputPath)$(AssemblyName).dll v1

这样,每次编译项目,就会在目录下生成swagger.json静态文件。

2.使用静态文件

修改Startup.cs:

//app.UseSwagger();
app.UseStaticFiles();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApplication3 v1"));

可以看到,我们注释掉了app.UseSwagger(),这会移除SwaggerMiddleware,不会再在运行时生成swagger.json。

运行程序,访问Swagger UI,和以前没有任何区别。

结论

相对于运行时生成swagger.json,静态文件性能更好,而且方便提供给第三方。

如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“

以上是关于ASP.NET Core Web API使用静态swagger.json文件的主要内容,如果未能解决你的问题,请参考以下文章