Node.js Express导出组织的路由?
使用express.Router()来调用/从我们的应用程序的API调用:
var express = require('express'); var app = express(); var router = express.Router();
在每个API调用之前router.use
console.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'
在你的新路线模块(例如在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
在您的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;
在文件夹中的文件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
文件可以具有相同的结构。
我觉得这对开发节点项目非常舒服。