Open API 3.0.0: 引用文件无法访问父组件

Open API 3.0.0: referenced file cannot access parent components

使用Open API 3.0.0,当主页引用文件时如下:

file: main.yaml
...
/ping:
    $ref: './dependency.yaml/#/foo'
...
components:
    responses:
        Response:
            type: string

并且依赖文件正在使用来自 main 的响应:

file: dependency.yaml
...
/ping:
    $ref: '#/components/responses/Response'
...

这行不通,因为他只是想解决自己的问题。 我尝试了不同的方式,但没有成功:

'..#/components/responses/Response'
'../#/components/responses/Response'
'#/../components/responses/Response'

有什么办法吗?我不敢相信除了处理一个巨大的文件我没有其他解决方案。

任何外部 $ref 路径必须包含文件路径。如果 dependency.yaml 需要引用 main.yaml$ref 应该类似于

$ref: './main.yaml#/components/responses/Response'

$refs 没有 "parent"/"child" 文件的概念,它们总是在当前文件的上下文中解析。

使用 swagger-ui,当 ref 不在主文件中时,例如在 dep/foo.yaml 中使用 ./ 引用当前文件。所以在这里,foo.yaml

所以 ../ 正在引用 dep 文件夹。

访问引用文件中父文件夹的解决方案是../../main.yaml