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

How to refer to enclosing type definition recursively in OpenAPI / Swagger?

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

我的一个类型定义包含一个数组,其中包含与父元素类型相同的子元素。 IE。像这样:

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

但是,Swagger Editor 不会选取 children 数组中的递归引用,它只是显示为 "undefined" 个元素的数组。

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

你的定义很好。这是在 Swagger Editor 和 Swagger UI:

中呈现递归模式的已知问题

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

要解决显示 null/"string"/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