On this page
Express.js Basics
Express is the most popular Node.js web framework — minimal, flexible, and unopinionated.
Setup
npm install express
import express from 'express';
const app = express();
const PORT = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('Hello Express!');
});
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
Routing
// GET
app.get('/users', (req, res) => {
res.json([{ id: 1, name: 'Alice' }]);
});
// GET with route parameter
app.get('/users/:id', (req, res) => {
const { id } = req.params;
res.json({ id, name: 'Alice' });
});
// POST
app.post('/users', (req, res) => {
res.status(201).json({ id: 2, ...req.body });
});
// PUT, PATCH, DELETE
app.put('/users/:id', (req, res) => res.json({ updated: true }));
app.patch('/users/:id', (req, res) => res.json({ patched: true }));
app.delete('/users/:id', (req, res) => res.status(204).send());
Request Object
app.get('/search', (req, res) => {
const { q, page = 1, limit = 10 } = req.query;
// /search?q=hello&page=2&limit=20
res.json({ query: q, page: Number(page), limit: Number(limit) });
});
app.get('/users/:userId/posts/:postId', (req, res) => {
const { userId, postId } = req.params;
res.json({ userId, postId });
});
Response Methods
res.send('Plain text');
res.json({ key: 'value' });
res.status(404).json({ error: 'Not found' });
res.redirect('/home');
res.sendFile('/path/to/file.html');
res.set('X-Custom-Header', 'value');
Body Parsing
app.use(express.json()); // JSON bodies
app.use(express.urlencoded({ extended: true })); // Form data
app.post('/users', (req, res) => {
const { name, email } = req.body;
res.status(201).json({ name, email });
});
Static Files
app.use(express.static('public'));
// Serves files from ./public at root URL
// public/style.css → /style.css
Router Module
Organize routes in separate files:
// routes/users.js
import { Router } from 'express';
const router = Router();
router.get('/', (req, res) => res.json([]));
router.get('/:id', (req, res) => res.json({ id: req.params.id }));
export default router;
// app.js
import userRoutes from './routes/users.js';
app.use('/api/users', userRoutes);
404 Handler
app.use((req, res) => {
res.status(404).json({ error: 'Route not found' });
});
Express provides the foundation — middleware and REST API patterns are covered in the next chapters.