Дополнительные свойства не допускаются: чванство, допускающее значение NULL

Я использую swagger 2.0 с node.js express 4.12.3 и mysql db.

Я создал следующую схему -

  Country:
    type: "object"
    properties:
      id:
        type: "integer"
        readOnly: true
        description: "Country Id"
      country:
        type: "string"
        description: "Country name"
      created_at:
        type: "string"
        readOnly: true
        format: "date-time"
        description: "Country record creation date"
      deleted_at:
        type: "string"
        format: "date-time"
        description: "Country record delete date"
    required:
      - country

Здесь поле delete_at будет пустым и не будет присутствовать в БД, пока запись не будет удалена. Мой экспресс-сервер nodejs возвращает дату следующим образом:

[{"id":4,"страна":"g","created_at":"2018-01-29T04:51:46.000Z","deleted_at":null},{"id":5,"страна" :"gaaaf","created_at":"2018-01-29T04:54:59.000Z","deleted_at":null},{"id":6,"country":"abcd","created_at":"2018 -01-29T04:57:02.000Z","deleted_at":null}]

Когда я пытаюсь сделать вызов отдыха через swagger-ui, я получаю следующую ошибку:

"message":"Response validation failed: failed schema

validation","code":"SCHEMA_VALIDATION_FAILED","failedValidation":true,
{"errors":[{"code":"INVALID_TYPE","message":"Expected type string but found type null","path":["5","deleted_at"],"description":"Country record delete date"},

Прочитав документы, я сделал следующее:

  deleted_at:
    type: "string"
    format: "date-time"
    nullable: true
    description: "Country record delete date"

Затем я начал получать эту ошибку проверки в swagger-ui

сообщение: "Дополнительные свойства не разрешены: допустимо значение NULL"

Я попытался установить тип объекта из строки, но даже это не сработало.

 deleted_at:
        type: "object"
        format: "date-time"
        nullable: true
        description: "Country record delete date"

person WitVault    schedule 29.01.2018    source источник


Ответы (1)


OpenAPI/Swagger 2.0 не разрешает обнуляемые значения для любых типов. nullable: true был представлен в OpenAPI 3.0, он не поддерживается в OpenAPI/Swagger 2.0.

Обходной путь — не отправлять deleted_at, если он должен быть null.

person Helen    schedule 29.01.2018
comment
Я думаю, что OpenApi 3.0 не полностью поддерживается инструментами чванства. Правильно? - person WitVault; 29.01.2018
comment
Некоторые инструменты поддерживают это, некоторые нет. Если вы имеете в виду swagger-node, то он пока не поддерживает 3.0. Существует существующий запрос функции github.com/swagger-api/swagger-node/issues. /514. - person Helen; 29.01.2018
comment
В настоящее время я думаю о том, чтобы не отправлять delete_at, если он равен нулю. - person WitVault; 29.01.2018