Routing is one of the most important concepts in Express.js. It defines how your application responds to client requests made to specific endpoints (URLs).
In this tutorial, you’ll learn:
Routing refers to determining how an application responds to a client request to a specific endpoint.
Basic syntax:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Welcome to Express Routing!');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});Here:
Express supports different HTTP methods:
MethodPurposeGET | Retrieve data
POST | Create data
PUT | Update data
DELETE | Delete data
Example:
app.post('/users', (req, res) => {
res.send('User Created');
});
app.put('/users/:id', (req, res) => {
res.send('User Updated');
});
app.delete('/users/:id', (req, res) => {
res.send('User Deleted');
});CRUD stands for:
Example with dummy array:
let users = [];
// CREATE
app.post('/users', (req, res) => {
users.push(req.body);
res.send('User Added');
});
// READ
app.get('/users', (req, res) => {
res.json(users);
});
// UPDATE
app.put('/users/:id', (req, res) => {
users[req.params.id] = req.body;
res.send('User Updated');
});
// DELETE
app.delete('/users/:id', (req, res) => {
users.splice(req.params.id, 1);
res.send('User Deleted');
});Route parameters are used to capture values from the URL.
Example:
app.get('/users/:id', (req, res) => {
res.send(`User ID is ${req.params.id}`);
});If user visits:
http://localhost:3000/users/5
Output:
User ID is 5
👉 req.params is used to access route parameters.
Query parameters are optional values passed in the URL after ?.
Example URL:
http://localhost:3000/search?name=John&age=25
Code:
app.get('/search', (req, res) => {
const name = req.query.name;
const age = req.query.age;
res.send(`Name: ${name}, Age: ${age}`);
});👉 req.query is used to access query parameters.
Template routes allow dynamic URL matching using parameters.
Example:
app.get('/products/:category/:id', (req, res) => {
res.send(`Category: ${req.params.category}, Product ID: ${req.params.id}`);
});URL:
/products/electronics/101
Output:
Category: electronics, Product ID: 101
For larger applications, we use Router:
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('User Home');
});
module.exports = router;Then in main file:
const userRoutes = require('./routes/users');
app.use('/users', userRoutes);