Как рекурсивно сослаться на определение включающего типа в OpenAPI / Swagger?

Я пишу определение OpenAPI в редакторе Swagger.

Одно из моих определений типа содержит массив, содержащий дочерние элементы того же типа, что и родительский. Т.е. что-то вроде этого:

definitions:
  TreeNode:
    type: object
    properties:
      name:
        type: string
        description: The name of the tree node.
      children:
        type: array
        items:
          $ref: '#/definitions/TreeNode'

Однако редактор Swagger не получает рекурсивную ссылку в массиве children, который просто отображается как массив «неопределенных» элементов.

Кто-нибудь знает, как это сделать?


person Morten E. Rasmussen    schedule 26.04.2016    source источник


Ответы (1)


Ваше определение совершенно нормально. Это известная проблема с отрисовкой рекурсивных схем в редакторе Swagger и пользовательском интерфейсе Swagger:

https://github.com/swagger-api/swagger-ui/issues/3325

Чтобы обойти значения null / undefined в «Пример значения», вы можете добавить пользовательский example в свою схему:

definitions:
  TreeNode:
    type: object
    properties:
      name:
        type: string
        description: The name of the tree node.
      children:
        type: array
        items:
          $ref: '#/definitions/TreeNode'
    example:
      name: foo
      children:
        - name: bar
        - name: baz
          children:
            - name: qux
person Helen    schedule 16.03.2017