Открытый API 3.0.0: указанный файл не может получить доступ к родительским компонентам - PullRequest
0 голосов
/ 06 марта 2020

Использование Open API 3.0.0, когда главная страница ссылается на файл следующим образом:

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

А файл зависимостей использует ответ от основного:

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

Это не работает, поскольку он только пытается решить внутри себя. Я пробовал другой путь, безуспешно:

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

Есть ли способ сделать это? Я не могу поверить, что у меня нет других решений, кроме как работать с огромным файлом.

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Использование swagger-ui, когда ссылка отсутствует в главном файле, например, в dep/foo.yaml с использованием ./ ссылка на текущий файл. Итак, foo.yaml.

Итак, ../ ссылается на папку dep.

Решение для доступа к родительской папке в указанном файле: ../../main.yaml.

0 голосов
/ 06 марта 2020

Любые внешние $ref пути должны включать путь к файлу. Если dependency.yaml необходимо сослаться на main.yaml, $ref должно выглядеть так:

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

$ refs не имеют понятия "родительские" / "дочерние" файлы, они всегда разрешаются в контекст текущего файла.

...