OpenAPI не поддерживает $ref
везде . $ref
может использоваться только в определенных c местах, где Спецификация OpenAPI явно заявляет, что значением поля может быть «Ссылочный объект».
Например, $ref
недопустимо непосредственно в paths
, в components/parameters
и components/schemas
- вы можете ссылаться только на отдельные пути, параметры и схемы.
Правильная версия вашего примера:
paths:
/foo:
$ref: '#/paths/index.yml#/~1foo' # $ref to root node `/foo` in `paths/index.yml`
/bar:
$ref: '#/paths/index.yml#/~1bar' # $ref to root node `/bar` in `paths/index.yml`
components:
parameters:
param1:
$ref: 'components/parameters/index.yml#/param1'
param2:
$ref: 'components/parameters/index.yml#/param2'
schemas:
schema1:
$ref: 'components/schemas/index.yml#/schema1'
schema2:
$ref: 'components/schemas/index.yml#/schema2'
Если вы хотите использовать $ref
в случайных местах, вам придется предварительно обработать ваше определение, используя анализатор / инструмент, который может разрешать произвольные $ refs; это даст вам действительный файл OpenAPI, который можно использовать с OpenAPI-совместимыми инструментами. Одним из таких инструментов предварительной обработки является json -refs , пример предварительной обработки можно найти здесь .