In this blog post we will see some advanced routing techniques to be used with express
`
In my previous blog post I discussed basics of routes and how to implement them. In this section we will some more route features
//app.js file var users = require('./routes/users'); app.use('/users', users); //users.js file //this route will be called for all request with /users only //i.e http://127.0.0.1:3000/users router.get('/', function (req, res) { res.send('Route For Users Base URL'); }); //this route will be called for /users/list //i.e http://127.0.0.1:3000/users/list router.get('/list', function (req, res) { res.send('List Route'); }); //this will be called for /list/1 or /list/2 //there is a regex for the parameter to number only //so for urls like /list/manish this route won't be called router.get(/^\/list\/(\d+)$/, function (req, res) { console.log(req.params); res.send('list route for number id ' + req.params[0]); }); //this route will be called all urls with /list and the other part will be treated as //request parameter //e.g http://127.0.0.1/list/manish will pass in this route with parameter as manish //but url http://127.0.0.1/list/manish/test won't match this router.get('/list/:id', function (req, res) { res.send('List Route For ID ' + req.param('id')); }); //this is called when a form is submitted on /users/list url router.post('/list', function (req, res) { var post = JSON.stringify(req.body); res.send('Route For Post ' + post); }); //this is to perform a 301 redirect router.get('/list/users/access', function (req, res) { res.redirect(301, '/list/access'); }); router.get('/list/access', function (req, res) { res.send('Access Page After Redirect'); });
Using route.param for validation per-processing
Another extension of routes is to use the param() function to perform some validaion or per-processing logic.
This can be used to load objects, validations etc.
router.param('id', function (req, res, next, id) { if (id % 2 == 0) { next(new Error('Only Odd Values Allowed')); } else { req.is_valid = 1; next(); } }); router.get('/list/:id', function (req, res) { //param is called for this as well only once res.send('List Route For ID ' + req.param('id')); }); router.get('/list/:id/:page', function (req, res) { //param is called for this as well only once res.send('List Route For ID ' + req.param('id') + " page " + req.param('page') + ' Is valid request ' + req.is_valid); });
The post Getting Started With Express 4.x – Advanced Routing – Tutorial 6 appeared first on Excellence Technologies Magento Blog | Magento Tutorials | Magento Developer.