Как добавить Swagger в существующее приложение Node? - PullRequest
0 голосов
/ 07 ноября 2019

В документации по Swagger (https://github.com/swagger-api/swagger-node) только показано, как создать новое приложение. Как интегрировать Swagger в существующее приложение API?

1 Ответ

0 голосов
/ 08 ноября 2019

Я следовал этому руководству: https://blog.cloudboost.io/adding-swagger-to-existing-node-js-project-92a6624b855b

npm i swagger-ui-express -S

Я использовал редактор Swagger для создания файла swagger.yml. http://editor.swagger.io/

Я добавил это на свой сервер:

var swaggerUi = require('swagger-ui-express')
var fs = require('fs')
var jsyaml = require('js-yaml');
var spec = fs.readFileSync('swagger.yml', 'utf8');
var swaggerDocument = jsyaml.safeLoad(spec);
...
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));

После этого я смог получить доступ к документам Swagger через http://localhost/api-docs.

К сожалению, это не тот уровень интеграции, который Swagger имеет с Spring Boot в Java, где вы можете добавить аннотацию, и Swagger автоматически сгенерирует документацию для вас. Похоже, что Swagger for Node требует от вас ведения документации swagger.yml вручную. Мои маршруты определены как app.use('/users', userRouter), а внутри файла users.js есть функции, определенные как router.post('/status', (req, res) => { ... }. Это не совместимо с Swagger для Node, который имеет концепцию operationId, которая каким-то образом указывает на имя функции.

...