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文件的主要内容,如果未能解决你的问题,请参考以下文章

使用静态基类方案让 ASP.NET Core 实现遵循 HATEOAS Restful Web API

asp.net core web api 生成 swagger 文档

本地 Javascript Fetch Post 请求失败,调用 ASP.NET Core 2.2 Web API。 CORS 已启用

使用 ASP.NET Core MVC 创建 Web API

将文件从 ASP.NET Core Web api 发布到另一个 ASP.NET Core Web api

如果参数名称等于属性名称,则来自查询的 ASP.NET Core Web API 复杂类型绑定不起作用