What is the difference between "express.Router" and routing using "app.get"?

express, node.js, routes

Solution

Here's a simple example:

// myroutes.js
var router = require('express').Router();

router.get('/', function(req, res) {
    res.send('Hello from the custom router!');
});

module.exports = router;
// main.js
var app = require('express')();

app.use('/routepath', require('./myroutes'));

app.get('/', function(req, res) {
    res.send('Hello from the root path!');
});

Here, `app.use()` is mounting the `Router` instance at `/routepath`, so that any routes added to the `Router` instance will be relative to `/routepath`.

Problem

I have an app with following code for routing: ``` var router = express.Router(); router.post('/routepath', function(req, res) {}); ``` Now I have to put routing code in different files so I tried to use this approach, but it is not working perhaps because instead of `express.Router()` it uses: ``` app.post("/routepath", function (req, res) {}); ``` How can I put routing in different files using `express.Router()`? Why `app.get`, `app.post`, `app.delete`, etc, are not working in `app.js` after using `express.Router()` in them?

Original source

Related problems