Order of router precedence in express.js

The order is first come first serve.

In your case, if user hits /api, he will get response from api, but if you write /:name route before /api, /:name will serve for /api requests also.

Case1: /api will serve requests for /api.

var routes = require('./routes/index');
var users = require('./routes/users');
var api = require('./routes/api');


app.use('/api', api);
app.use("https://stackoverflow.com/users", users);

app.use('/:name', function(req, res, next) {    
    console.log('from app.js name:', req.params.name);   

    res.render('index', {
        title: req.params.name
    });
}, routes);

app.use("https://stackoverflow.com/", function(req, res, next) {   
    res.render('index', {
        title: 'MainPage'
    });
});

Case2: /:name serves requests for /api and /users

var routes = require('./routes/index');
var users = require('./routes/users');
var api = require('./routes/api');

app.use('/:name', function(req, res, next) {    
    console.log('from app.js name:', req.params.name);   

    res.render('index', {
        title: req.params.name
    });
}, routes);

app.use('/api', api);
app.use("https://stackoverflow.com/users", users);



app.use("https://stackoverflow.com/", function(req, res, next) {   
    res.render('index', {
        title: 'MainPage'
    });
});

Leave a Comment