2016-10-07 6 views
1

У меня есть модель определения, давайте назовите ее A.Swagger 2.0 anyOf replacement

A имеет свойство, которое представляет собой сложный объект, который может быть нескольких типов сложных объектов. Как я могу достичь этого с помощью swagger 2.0? anyOf не поддерживается на чванство, и я проверил в discriminator и полиморфных типов здесь:

https://github.com/OAI/OpenAPI-Specification/issues/403

пока я не понимаю, как я мог бы использовать его для моей потребности. Я уже построил полиморфный тип (рисунок):

Father: 
     discriminator: fatherType 
    SonA: 
    type: object 
    allOf: 
     - $ref: '#/definitions/Father' 
     - properties: 
      fatherType: 
      type: string 
      enum: 
       - SonA 
      name: 
      type: string 

Использование его в моей модели A не работает, как ожидалось:

A 
    type: object 
    properties: 
    father: 
     $ref: '#/definitions/Father' 

ответ

1

Я думаю, что вы ждать OpenAPI/Swagger версия 3.0 3.0, которая поддерживает anyOf.

Дополнительную информацию об OpenAPI/Swagger spec 3.0 из этого interview с Tony Tam.

+0

Я знаю, что он приходит в 3.0, но до сих пор мой лучший вариант для такого требования, когда мне нужен объект A или B или C? Должен ли я оставить его как пустой объект? Таким образом, для моего примера A будет только следующее: 'A type: object' – Jorayen

+0

Как насчет использования [расширения поставщика] (https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#vendorExtensions) в настоящее время, например x-anyOf? –

+0

Я бы не хотел его использовать, это будет ограничительным и конкретным для набора инструментов, которые я буду использовать. Думаю, мне придется ждать тогда – Jorayen

Смежные вопросы