一段时间以来,我一直在使用NSwag为我的WebAPI生成Angular TS客户端,我喜欢它。
我终于离开了NSwagStudio,转而使用MSBuild目标自动生成我的json规范。
我看到有一种名为AspNetCoreToSwaggerGenerator
的新规格生成方法,它使用ASP.NET Core API Explorer服务。
docs指定:
此生成器使用ASP.NET Core API Explorer服务生成规范,并将最终取代基于反射的生成器WebApiToSwaggerGenerator。建议将此生成器用于新项目,并开始迁移现有项目。
所以我认为我会很好用的。但是我突然发现一些有关缺少路径的错误,这些错误来自我的startup.cs文件。我认为这很奇怪,直到我意识到它实际上是在分解Startup类的一个实例并运行代码-如果使用的是API Explorer才有意义。
但是,这不仅使我感到非常危险(如果我在启动中做了一些怪异的编码),而且如果运行大量启动代码,则可能会变慢。
我改用这样的旧WebApiToSwaggerGenerator
:
<Target Name="NSwag" AfterTargets="Build">
<Copy SourceFiles="@(Reference)" DestinationFolder="$(OutDir)References" />
<Exec Command="$(NSwagExe_Core21) webapi2swagger /assembly:$(OutDir)RR.API.DLL /output:rrapi.json" />
<RemoveDir Directories="$(OutDir)References" />
</Target>
这会生成一个rrapi.json
文件,然后可以在Angular构建中运行该文件以实际创建客户端。似乎速度很快,效果很好。
所以我不知道新的AspNetCoreToSwaggerGenerator
有哪些最佳实践和好处。具体来说:
我基本上希望每次构建WebAPI客户端时都生成一个静态.json文件。我现在看不出有任何理由不使用旧的发电机。