Я следовал этому руководству: 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
, которая каким-то образом указывает на имя функции.