微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nodjs swagger自动发电集成

如何解决Nodjs swagger自动发电集成

我需要使用NodeJS开发API,还需要为API开发文档。我集成了swagger auto-gen以创建swagger.json。但是,如果我按如下所示使用route.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);
 

}

,并将这些route.js映射到swagger.js

请提出生成swagger.js的最佳方法

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

解决方法

swagger-autogen的2.0.0版本添加了此功能。以前的版本无法识别路由。对于您而言,生成文件swagger.js和其他文件的最佳方法是:

文件:swagger.js

const swaggerAutogen = require('swagger-autogen')();
const outputFile = './swagger_output.json';
const endpointsFiles = ['./index.js'];

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

文件: index.js

const swaggerUi = require('swagger-ui-express')
const swaggerFile = require('./swagger_output.json');
const express = require('express');
const app = express();

const router = require('./routes');

app.use(router);
app.use('/doc',swaggerUi.serve,swaggerUi.setup(swaggerFile));
app.listen(3000);

文件: routes.js

const express = require('express');

const userController = require('../controller/userController');
const apiRouter = express.Router();
const routerV1 = express.Router();
const 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);

module.exports = apiRouter;

使用以下命令更新模块: npm -i swagger-autogen@2.0.2

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

我希望它能对您有所帮助。如果需要,请看以下示例: swagger-autogen using router

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。