Я начал использовать чванство с swagger-ui-express и swagger-jsdoc для автоматического документирования моего существующего API, написанного с помощью nodejs и выражающего (как описано здесь - пример).
Я столкнулся с проблемой, когда попытался добавить $ref
в существующий файл схемы JSON (который находится внутри моего проекта в том же каталоге, что и все мои файлы js) в мою аннотацию.
Я попытался написать локальный путь (./schema.json
) и абсолютный путь, попытался использовать #
, используя множество синтаксисов, и ничего не сработало.
Моя аннотация выглядит так:
/**
* @swagger
* /testing:
* get:
* description: This should show the json schema
* responses:
* 200:
* description: "successful operation"
* schema:
* $ref: "./schema.json"
*/
Я ожидал, что пользовательский интерфейс swagger покажет мне схему JSON в моем разделе запроса до. Я получаю следующую ошибку -
Resolver error at paths./testing.get.responses.200.schema.$ref
Could not resolve reference: Tried to resolve a relative URL, without having a basePath. path: './schema.json' basePath: 'undefined'.
Я поискал проблему в Интернете и не нашел четкого ответа. Я видел решение, в котором предлагалось разместить мою схему на сервере и получить к ней доступ по URL-адресу, но я предпочитаю не делать этого на данном этапе.
Кроме того, в какой-то момент я сохранил схему в переменной, а затем поместил ее в $ref
, и она работала нормально. Единственная проблема заключалась в том, что схема включала некоторые внутренние ссылки на элемент в том же файле, и Swagger не мог их разрешить.
Есть ли способ правильно работать с $ref
в swagger-ui-express?
$ref
преследуют почти каждый инструмент Swagger / OpenAPI. Проголосуйте за их исправление или опубликуйте PR на Github. - person Yuri   schedule 02.04.2019