Nodejs swagger 自动生成集成

问题描述 投票:0回答:1

我需要使用 NodeJS 开发 API,还需要为 API 开发文档。我与 swagger auto-gen 集成以创建 swagger.json。但是如果我使用routes.js,swagger.json将无法正确生成,如下所示

    var express = require('express');

    module.exports = function(app) {
    var userController    = require('../controller/userController');
    var apiRouter = express.Router();
    var routerV1 = express.Router();
    var routerV2 = express.Router();

    app.use('/admin', apiRouter);
    apiRouter.use("/v1", routerV1);
    apiRouter.use("/v2", routerV2);
 
    routerV1.route('/users').get(userController.getUsersV1);    
    routerV2.route('/users').get(userController.getUsersV2);
     
   
 }

并且还将这些routes.js映射到swagger.js中

请建议生成 swagger.js 的最佳方式

我们需要为所有控制器创建路由文件吗?

node.js swagger-codegen
1个回答
7
投票

swagger-autogen 版本 2 添加了此功能。以前的版本无法识别路线。对于您的情况,生成文件 swagger.js 的最佳方法是:

文件: swagger.js

const swaggerAutogen = require('swagger-autogen')();
const outputFile = './swagger_output.json';
const endpointsFiles = ['./routes.js']; // root file where the route starts.

swaggerAutogen(outputFile, endpointsFiles).then(() => {
    require('./index.js');           // Your project's root file
})

将您的模块更新到最新版本。

并使用以下命令运行您的项目:node swagger.js

关于所有控制器的路由文件,您不需要为每个控制器实现它,但这也取决于代码的结构。如果您有像示例一样的根路由文件,则这足以扫描所有子路由。我希望它对你有帮助。如果您需要以下内容,请查看此示例: 使用路由器的 swagger-autogen

© www.soinside.com 2019 - 2024. All rights reserved.