使用NSwag'AspNetCoreToSwaggerGenerator'的最佳实践

Sim*_*ver 5 swagger nswag

我已经使用NSwag一段时间来为我的WebAPI生成一个Angular TS客户端,我喜欢它.

我终于从NSwagStudio转向使用MSBuild目标来自动生成我的json规范.

我看到有一种生成specs的新方法AspNetCoreToSwaggerGenerator,它使用ASP.NET Core API Explorer服务.

文件规定:

此生成器使用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>
Run Code Online (Sandbox Code Playgroud)

这会生成一个rrapi.json文件,然后我可以在我的Angular构建中运行以实际创建客户端.它似乎很快,效果很好.

所以我不知道最新的做法和新的好处是什么AspNetCoreToSwaggerGenerator.特别是:

  • 如何防止从我的Startup.cs文件运行不必要的代码
  • 有什么实际的好处?这是通过API Explorer服务启用更高级的元数据 - 还是Swagger 3的未来验证?
  • 使用任何一个典型项目的基准是什么.

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