使用NSwag'AspNetCoreToSwaggerGenerator'的最佳做法

时间:2018-07-09 00:07:18

标签: swagger nswag

一段时间以来,我一直在使用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有哪些最佳实践和好处。具体来说:

  • 如何防止从Startup.cs文件运行不必要的代码
  • 实际收益是什么?这是为了通过API Explorer服务启用更高级的元数据,还是将来对Swagger 3的一些证明?
  • 在典型项目中使用这两种方法的基准是什么。

我基本上希望每次构建WebAPI客户端时都生成一个静态.json文件。我现在看不出有任何理由不使用旧的发电机。

0 个答案:

没有答案