Express.js Routing Tutorial

Express.js Routing Tutorial

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);