Express route handlers receive req (request) and res (response) objects. The res object provides convenient methods: res.json(), res.send(), res.status(), res.redirect(), and more.
You can chain multiple handler functions for a single route.
Example
const express = require('express');
const app = express();
app.use(express.json());
// In-memory "database":
let users = [
{ id: 1, name: 'Alice', email: 'alice@example.com' },
{ id: 2, name: 'Bob', email: 'bob@example.com' },
];
let nextId = 3;
// GET all users:
app.get('/users', (req, res) => {
res.json(users);
});
// GET one user:
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ error: 'User not found' });
res.json(user);
});
// POST create user:
app.post('/users', (req, res) => {
const { name, email } = req.body;
if (!name || !email) {
return res.status(400).json({ error: 'name and email required' });
}
const newUser = { id: nextId++, name, email };
users.push(newUser);
res.status(201).json(newUser);
});
// DELETE a user:
app.delete('/users/:id', (req, res) => {
const id = parseInt(req.params.id);
users = users.filter(u => u.id !== id);
res.status(204).send();
});
app.listen(3000, () => console.log('Running on port 3000'));