Создание сложных типов (определений) в Swagger

Я создал определение под названием Product и другое под названием Text (см. код).

На parameters из paths не могу использовать тип Text созданный в определениях. В определении Product у меня есть свойство с именем message, и я хочу, чтобы это свойство также имело тип Text.

(...)

paths:
  /products:
    get:
      summary: Product Types
      description: |
        Description text
      parameters:
        - name: latitude
          in: query
          description: Latitude component of location.
          required: true
          ### The type Text was not found here
          type: Text ### The type Text was not found here
(...)

definitions:

  Product:
    properties:
      message:
        ### The type Text was not found here
        type: Text ### Compilation Error in this line ####
      name:
        type: string
        description: Data description.


  Text:
    properties:
      code:
        type: string

Но возникает эта ошибка:

Ошибка Swagger: данные не соответствуют ни одной схеме из anyOf.

Как я могу ссылаться на тип Text на тип Product?


person Computered    schedule 10.09.2015    source источник


Ответы (1)


Пожалуйста, используйте $ref вместо этого. Вот пример

type: object
required:
- name
properties:
  name:
    type: string
  address:
    $ref: '#/definitions/Address'
  age:
    type: integer
    format: int32
    minimum: 0

Ссылка: https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#simple-model

person William Cheng    schedule 11.09.2015
comment
Привет, спасибо за ваш ответ... Это работает для этого примера, но теперь я не могу использовать $ref внутри параметров пути. Я привел пример выше. Знаете ли вы, как ссылаться на этот тип внутри параметров путей? С уважением. - person Computered; 11.09.2015
comment
В качестве параметра пути вы не можете использовать model. Параметр пути должен быть примитивного типа, например. строка, число и т. д. - person William Cheng; 12.09.2015