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:
- Introduction to Routing in Express.js
- HTTP Methods & Route Handling
- CRUD Operations in Express
- Route Parameters
- Query Parameters
- Template Routes
Introduction to Routing in Express.js
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:
- app.get() → Handles GET request
- '/' → Route path
- (req, res) → Request & Response objects
HTTP Methods in Express
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 in Express.js
CRUD stands for:
- C → Create
- R → Read
- U → Update
- D → Delete
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 in Express
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 in Express
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 in Express
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
Using Express Router (Modular Routing)
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);