Routing
4 snippetsDefine routes and handle requests
Basic Routes
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello'));
app.post('/users', (req, res) => res.json(req.body));
app.put('/users/:id', handler);
app.delete('/users/:id', handler); Route Params
app.get('/users/:id', (req, res) => {
const { id } = req.params;
res.json({ id });
});
app.get('/posts/:year/:month', (req, res) => {
const { year, month } = req.params;
}); Query Strings
// GET /search?q=hello&page=2
app.get('/search', (req, res) => {
const { q, page = 1 } = req.query;
}); Router
const router = express.Router();
router.get('/', listUsers);
router.post('/', createUser);
router.get('/:id', getUser);
app.use('/api/users', router); Middleware
4 snippetsRequest processing pipeline
Built-in
app.use(express.json()); // Parse JSON body
app.use(express.urlencoded({ extended: true }));
app.use(express.static('public')); // Serve static files Custom Middleware
const logger = (req, res, next) => {
console.log(req.method, req.url);
next();
};
app.use(logger); Error Middleware
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: err.message });
});
// Must have 4 params to be error handler Route-specific
const auth = (req, res, next) => {
if (!req.headers.authorization) return res.sendStatus(401);
next();
};
app.get('/admin', auth, adminHandler); Response Methods
4 snippetsSending responses
JSON & Status
res.json({ user });
res.status(201).json({ created: true });
res.sendStatus(204); // No content Redirect
res.redirect('/login');
res.redirect(301, '/new-url'); Download & Send
res.download('/path/to/file.pdf');
res.sendFile('/absolute/path/to/file.html');
res.type('html').send('<h1>Hello</h1>'); Headers & Cookies
res.set('X-Custom', 'value');
res.cookie('token', 'abc', { httpOnly: true, maxAge: 86400000 });
res.clearCookie('token'); Tired of looking up syntax?
DocuWriter.ai generates documentation and explains code using AI.
Common Patterns
4 snippetsAuth, CORS, validation
CORS
const cors = require('cors');
app.use(cors({ origin: 'https://example.com' })); Rate Limiting
const rateLimit = require('express-rate-limit');
app.use(rateLimit({ windowMs: 15 * 60 * 1000, max: 100 })); Async Handler
const asyncHandler = (fn) => (req, res, next) =>
Promise.resolve(fn(req, res, next)).catch(next);
app.get('/data', asyncHandler(async (req, res) => {
const data = await fetchData();
res.json(data);
})); Validation
const { body, validationResult } = require('express-validator');
app.post('/users',
body('email').isEmail(),
body('name').trim().notEmpty(),
(req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) return res.status(400).json(errors.array());
}
);