OpenApi 3.0 anyOf - PullRequest
       10

OpenApi 3.0 anyOf

0 голосов
/ 17 ноября 2018

читаю предыдущие посты. Ищем в полоску модель OpenAPi3.0. Вот небольшой фрагмент. Какой тип приложения? Это рекурсивно ссылается на себя? x-extensionResources - это расширение поставщика.

 "charge": {
    "properties": {
      "amount": {
        "description": "A positive integer in the [smallest currency unit](https://stripe.com/docs/currencies#zero-decimal) ",
        "type": "integer"
      },
      "application": {
        "anyOf": [
          {
            "maxLength": 5000,
            "type": "string"
          },
          {
            "$ref": "#/components/schemas/application"
          }
        ],
        "description": "ID of the Connect application that created the charge.",
        "nullable": true,
        "x-expansionResources": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/application"
            }
          ]
        }
      },
      ...

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

В этом примере значение свойства application может быть:

  • строка длиной до 5000 символов («идентификатор приложения Connect, создавшего заряд»)
  • экземпляр application схемы
  • null

В терминах Stripe application является расширяемым свойством.Расширяемые свойства могут содержать либо идентификатор связанного объекта, либо полный объект.Это то, что указывает их расширение x-expansionResources.

Технически, anyOf в этом примере может быть заменено на oneOf.Подсхемы имеют совершенно разные типы (type: string и type: object), поэтому будут работать как anyOf, так и oneOf.(oneOf означает «соответствовать точно одной подсхеме», anyOf означает «соответствовать одной или нескольким подсхемам».)

0 голосов
/ 17 ноября 2018

После просмотра тестовых данных они либо отправляют идентификатор (строку), либо класс.ExtensionResource сообщает ему об одном из классов.В этом примере был только один.Я не понимаю, почему модель не использовала один из первых?

...