Node.js为组织快速导出路由?

时间:2015-08-29 08:25:31

标签: javascript node.js express routes

利用express.Router()对我们的应用程序进行API调用:

var express = require('express');
var app     = express();
var router  = express.Router();
每次API调用之前

router.use console.logs:

router.use(function(req, res, next) { // run for any & all requests
    console.log("Connection to the API.."); // set up logging for every API call
    next(); // ..to the next routes from here..
});

我们如何将我们的路线导出到folder/routes.js并从我们当前所在的主 app.js 访问这些路线:

router.route('/This') // on routes for /This
    // post a new This (accessed by POST @ http://localhost:8888/api/v1/This)
    .post(function(req, res) {
        // do stuff
    });

router.route('/That') // on routes for /That
    // post a new That (accessed by POST @ http://localhost:8888/api/v1/That)
    .post(function(req, res) {
        // do stuff
    });

...当我们为每条路线添加前缀时:

app.use('/api/v1', router); // all of the API routes are prefixed with '/api' version '/v1'

2 个答案:

答案 0 :(得分:7)

在新路线模块中(例如在api/myroutes.js中),使用module.exports = myRouter;

导出模块
var express     = require('express');
var router      = express.Router();

router.use(function(req, res, next) { // run for any & all requests
  console.log("Connection to the API.."); // set up logging for every API call
  next(); // ..to the next routes from here..
});

router.route('/This')
  .get(function(req, res) { });
  .post(function(req, res) { });

...

module.exports = myRouter;

然后您可以在主服务器/应用程序文件中要求该模块:

var express = require('express');
var app     = express();

...

var myRoutes = require('./api/myRoutes');

app.use('/api', myRoutes); //register the routes

答案 1 :(得分:1)

在app.js文件中,您可以拥有以下内容:

//api
app.use('/', require('./api'));

在文件夹api中,您可以拥有' index.js`文件,您可以在其中输入以下内容:

var express = require('express');
var router = express.Router();

//API version 1
router.use('/api/v1', require('./v1'));

module.exports = router;

v1文件夹index.js中,这样的内容:

var express = require('express');
var router = express.Router();

router.use('/route1', require('./route1'));
router.use('/route2', require('./route2'));

module.exports = router;

文件route1.js可以具有以下结构:

var express = require('express');
var router = express.Router();

router.route('/')
    .get(getRouteHandler)
    .post(postRouteHandler);

function getRouteHandler(req, res) {
    //handle GET route here
}

function postRouteHandler(req, res) {
    //handle POST route here
}

module.exports = router;

route2.js文件可以具有相同的结构。

我认为开发节点项目非常方便。