Лучшие практики для использования NSwag 'AspNetCoreToSwaggerGenerator'

Некоторое время я использовал NSwag для генерации клиента Angular TS для моего WebAPI, и мне это нравится.

Наконец, я перешел от NSwagStudio к использованию целей MSBuild для автоматической генерации моей спецификации json.

Я вижу, что есть новый способ генерировать спецификации под названием 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>

Это порождает меня rrapi.json файл, который я могу затем запустить в своей сборке Angular, чтобы фактически создать клиента. Вроде бы довольно быстро и хорошо работает.

Так что мне остается удивляться, каковы лучшие практики и преимущества новых AspNetCoreToSwaggerGenerator, В частности:

  • Как предотвратить запуск ненужного кода из моего файла Startup.cs
  • Каковы реальные выгоды? Это для того, чтобы включить более продвинутые метаданные через службу API Explorer - или какие-то пробные версии для Swagger 3?
  • Каковы критерии использования любого для типичного проекта.

Я хочу, чтобы статический файл.json генерировался каждый раз, когда я собираю свой клиент WebAPI. Сейчас я не вижу причин не использовать старый генератор.

0 ответов

Другие вопросы по тегам