Лучшие практики для использования 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. Сейчас я не вижу причин не использовать старый генератор.