如何在OpenAPI / Swagger中递归引用封闭类型定义?

时间:2016-04-26 13:14:21

标签: recursion swagger swagger-ui openapi swagger-editor

我正在Swagger编辑器中编写OpenAPI定义。

我的一个类型定义包含一个包含与父元素相同类型的子元素的数组。即像这样的东西:

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

但是,Swagger编辑器不会在children数组中选取递归引用,该引用只是显示为“未定义”元素的数组。

有没有人知道如何做到这一点?`

1 个答案:

答案 0 :(得分:3)

你的定义非常好。在Swagger Editor和Swagger UI中渲染递归模式是一个已知的问题:

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

要解决"示例值"中的null /未定义值,您可以向架构中添加自定义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