Как правильно использовать $ ref в файле swagger при работе с swagger-ui-express и swagger-jsdoc - PullRequest
0 голосов
/ 29 декабря 2018

Я начал использовать swagger с swagger-ui-express и swagger-jsdoc для автоматического документирования моего существующего API, который написан с помощью nodejs и express(как описано здесь - пример ).

Я столкнулся с проблемой, когда пытался добавить $ref в существующий файл JSON Schema (который находится внутримой проект в том же каталоге, что и все мои 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 в чванство-щ-экспресс

1 Ответ

0 голосов
/ 19 июня 2019
У

возникла та же проблема, и вы нашли ваш вопрос.

Я только что решил свою проблему, поэтому думаю, что смогу помочь.

Во-первых, вы пытались:

schema:
      $ref: "schema.json"

без . Так учат в документации.

...