nullable поля в swagger на узле.Яш

Я потратил кучу времени, пытаясь найти решение для создания документов swagger в узле.JS. Основная библиотека-swagger-node, в которой вы создаете файл Swagger yaml, а затем добавляете в него свои контроллеры. Он автоматически предоставляет документы swagger ui в вашем приложении и выполняет проверку запроса и ответа на модели, указанные в yaml.

это аккуратно, однако у меня есть требование, чтобы некоторые поля, которые я хочу явно иметь возможность возвращать или принимать null как значение, например:

{ 
  id: 123,
  description: "string",
  date_sent: null
}

Я не хочу удалять date_sent ключ, я хочу явно указать его как null.

спецификация swagger не поддерживает anyOf как обычно делает это схема JSON, я считаю.

мне интересно, есть ли обходной путь? Возможно, какая-то библиотека доступна для узла, который имеет x-nullable конкретный флаг поставщика вы можете добавить или каким-то образом указать, что все мои необязательные поля должны быть обнулены.

Я придется написать что-то самому, что берет мой файл swagger, а затем изменяет его до запуска промежуточного программного обеспечения валидатора, или есть какой-то обходной путь, который кто-то может предложить?

3 ответов


SwaggerUI не поддерживает типы nullable (см. здесь). Но я использовал свойства nullable как:

type: ['string','null']

после этого это свойство исчезает из пользовательского интерфейса, но проверка все еще работает.


nullable поле поддерживается в спецификации OpenAPI (FKA Swagger)В3.0.0, но не в v2.0. Типы Nullable определяются следующим образом:

# Can be string or null
type: string
nullable: true

вместо добавления null в свойство типа можно использовать свойство по умолчанию.

чванство.пример определения свойства json:

"due_date": {
  "type": "string",
  "description": "Due date",
  "default": "null"
},

это допустимое определение типа Swagger и по-прежнему отображается в пользовательском интерфейсе Swagger.