#c# #asp.net-core #swagger #swashbuckle #nswag
Вопрос:
Я использую dotnet swagger cli, чтобы создать файл определения swagger для ASP.NET 5.0 веб-api и использование nswag для создания клиентских классов C#, но я столкнулся с проблемой. Я хочу, чтобы все мои ссылочные типы были обнуляемыми, если только они не помечены как Обязательные. Для моих примитивных полей он просто следует за конвейерами C#, независимо от того, может ли он быть обнулен или нет, но мои ссылки не помечаются nullable:true в определении swagger.
Вместо этого я попытался сериализоваться как V2, но тогда это просто делает все недействительным, чего я тоже не хочу.
Прямо сейчас я использую следующую команду CLI:
dotnet swagger tofile --serializeasv2 --output $(MSBuildProjectDirectory)nswagswagger.json project.dll v1" ConsoleToMSBuild="true" WorkingDirectory="$(OutputPath)"
Комментарии:
1. Не могли бы вы привести пример команды swagger cli, которую вы использовали?
2. @AndrewSilver Обновил сообщение
3. > Я хочу, чтобы все мои ссылочные типы были обнуляемыми, если только они не помечены как Обязательные. Могу я спросить, почему?
Ответ №1:
Ну, я не знаю, как реализовать именно то поведение, о котором вы упомянули.
Будет ли достаточно, чтобы свойства, допускающие обнуление, в проекте API оставались неизменными(обнуляемыми) в сгенерированном коде?
Для этого вы можете добавить это в свой проект API
services.AddSwaggerGen(c =>
{
c.UseAllOfToExtendReferenceSchemas();
а затем включите следующую опцию в генераторе NSwag: generateNullableReferenceTypes=true
.
Этот параметр выглядит как «Создать тип ссылки с возможностью обнуления…» в разделе «Классы DTO» в пользовательском интерфейсе NswagStudio.
Я думаю, что этот подход также должен работать с swagger cli