Почему атрибут OAS3, который может обнуляться, не распознается валидатором схемы Newtonsoft? - PullRequest
0 голосов
/ 14 марта 2019

Мой API документирован с использованием Swagger OAS3. У меня есть свойство, определенное с помощью YAML как:

LoanAmount:
 type: number
 nullable: true 

Результирующий JSON, который я могу экспортировать из чванства, выглядит следующим образом:

  "LoanAmount": {
    "type": "number",
    "nullable": true
  },

Когда я тестирую проверку с использованием jsonschemavalidator со схемой как:

   {
      "title": "A JSON Schema for OpenAPI 3.0.",
      "id": "http://openapis.org/v3/schema.json#",   "$schema": 
      "http://json-schema.org/",   "type": "object",
      "properties": {
      "LoanAmount": {
      "type": "number",
      "nullable": true}
       }
    }

и введите как:

{
  "LoanAmount" : null
}

Сбой проверки с

"Недопустимый тип. Ожидаемый номер, но получил нулевое значение"

Я могу сделать эту работу, используя:

"LoanAmount": {
"type": ["number","null"]
}

Однако я не могу понять, как это определить, используя OAS3 YAML. Моя цель не состоит в том, чтобы поддерживать отдельную схему за пределами хаба-концентратора, чтобы удовлетворить мои необязательные требования ко многим полям в моем API.

Swagger docs page описывает, что OAS3 "использует расширенное подмножество спецификации схемы JSON Wright Draft 00 (он же Draft 5) для описания форматов данных ..."

В документации по Json.Net Schema говорится, что «поддерживает 100% JSON Schema Draft 6 и имеет обратную совместимость со старыми версиями»

Мое предположение состоит в том, что атрибут nullable OAS3 является одной из расширенных функций подмножества, а не частью какого-либо проекта схемы JSON, но я жду подтверждения этого, прежде чем я продолжу.

1 Ответ

0 голосов
/ 18 марта 2019

OAS3 использует подмножество подмножества ключевых слов JSON Schema.

См. https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#data-types

Примитивные типы данных в OAS основаны на типах, поддерживаемых спецификацией JSON Schema WrightЧерновик 00. Обратите внимание, что целое число как тип также поддерживается и определяется как число JSON без дроби или экспоненты.null не поддерживается как тип (см. nullable для альтернативного решения).Модели определяются с использованием объекта схемы, который является расширенным подмножеством спецификации схемы JSON Wright Draft 00.

Подтверждение.Ведется работа, позволяющая в полной мере использовать схему JSON в будущих версиях OAS!

...