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
。
使用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
。