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

Mor*_*sen 12 recursion swagger swagger-ui swagger-editor openapi

我正在Swagger编辑器中编写YAML文件.

我的一个类型定义包含一个包含与父类型相同类型的子元素的数组.就是这样的:

definitions:
  TreeNode:
    type: object
    properties:
      name:
        type: string
        description: The name of the tree node.
      children:
        type: array
        items:
          $ref: '#/definitions/TreeNode'
Run Code Online (Sandbox Code Playgroud)

但是,Swagger没有在"children"数组中获取递归引用,该数组简单地显示为"未定义"元素的数组.

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

Hel*_*len 7

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

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
Run Code Online (Sandbox Code Playgroud)