Как документировать существующие API-интерфейсы nodejs?

Новичок в Node и очень разочарован несколькими библиотеками, которые делают одно и то же. Я иду некуда.

У меня есть существующее приложение Node + Express, и мне нужно интегрировать документы swagger. Самый полезный поток, который я нашел, был этим. Но он просто ожидает наличия параллельного файла api-docs.json. Это не генерируется автоматически.

Я хочу задокументировать каждый API в контроллере и создать документы. Может ли кто-нибудь указать мне лучший ресурс?


person sidgate    schedule 14.11.2016    source источник
comment
Запрашивать рекомендации не по теме в SO. Подумайте о том, чтобы настаивать на подходе и спросите, как только обнаружите конкретную проблему.   -  person E_net4 the curator    schedule 14.11.2016
comment
вы можете использовать этот apidocjs.com для документации, я не использовал это как ответ, так как это очень самоуверенный вопрос   -  person AJS    schedule 14.11.2016


Ответы (1)


Наконец я смог заставить его работать с swagger-jsdoc.

Шаги

  • Добавьте пакет Swagger-UI.
  • Добавить зависимость swagger-ui

    npm install -g swagger-ui

  • Настройте swagger в файле server.js.

    var swaggerJSDoc = require('swagger-jsdoc'); var options = { swaggerDefinition: { info: { title: 'Hello World', // Title (required) version: '1.0.0', // Version (required) }, }, apis: ['./routes.js'], // Path to the API docs }; var swaggerSpec = swaggerJSDoc(options); app.get('/api-docs.json', function(req, res) { res.setHeader('Content-Type', 'application/json'); res.send(swaggerSpec); }); app.use('/api/docs',express.static('./node_modules/swagger-ui/dist'));

  • Добавьте чванливые комментарии к вашим функциям контроллера

/** * @swagger * resourcePath: /api * description: All about API */

/** * @swagger * /login: * post: * description: Login to the application * produces: * - application/json * parameters: * - name: username * description: Username to use for login. * in: formData * required: true * type: string * - name: password * description: User's password. * in: formData * required: true * type: string * responses: * 200: * description: login */ app.post('/login', function(req, res) { res.json(req.body); });

person sidgate    schedule 15.11.2016