组合API nodejs的多个路由

时间:2018-05-25 17:11:46

标签: javascript node.js api routes

我正在创建一个API并拥有多条路线。我的文件夹结构如下所示

-api
 -controllers
 -routes
  -videoRoutes
  -userRoutes
  -mainRoutes
 -server

我的路线内部是我的API调用。以下是我在userRoutes

中的api路由示例
 module.exports = function(app) {
var user = require('../controllers/userController');

//user routes
app.route('/api/v1.0/users/getAllUsers')
    .get(user.getAllUsers);

app.route('/api/v1.0/users/login')
    .post(user.login);    

app.route('/api/v1.0/users/addUser')
    .post(user.addUser);

};

游戏路线遵循类似的结构布局。我想有一个包含所有其他路由的主路由,然后在我的server.js中引用它。为此,我在主路径文件夹

中尝试了以下操作
var mainRoutes = module.exports = function(app) {
require('./userRoutes');
require('./gameRoutes');
};

在我的server.js中,我试图以下列方式调用mainRoutes

 var routes = require('./api/routes/mainRoutes')
 routes(app);

但是,这不起作用,并且在尝试在前端调用它们时,没有任何API调用。我的代码工作得很好,好像我将两个文件(手动合并)一起工作但它尝试组合使用模块导出似乎失败了?我究竟做错了什么?如何让路由分成两个js文件并有一个mainRouter,然后在我的server.js中引用它?

如果这是不好的做法或任何人有任何替代方法的建议,请告诉我。

2 个答案:

答案 0 :(得分:0)

如果您将mainRoutes文件更改为:

,它应该有效
var mainRoutes = module.exports = function(app) {
  app.use(require('./userRoutes'));
  app.use(require('./gameRoutes'));
};

此外,请确保您从各个路线导出路由器。

答案 1 :(得分:0)

将您的代码更改为以下内容:

var mainRoutes = module.exports = function(app) { require('./userRoutes')(app); require('./gameRoutes')(app); };