Performance: Validating route params and query
MEDIUM IMPACT
This affects server response time and user experience by preventing unnecessary processing and errors early in the request lifecycle.
import { param, query, validationResult } from 'express-validator'; app.get('/user/:id', [ param('id').isUUID(), query('verbose').optional().isBoolean() ], (req, res) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } const id = req.params.id; database.findUserById(id).then(user => { if (!user) { res.status(404).send('User not found'); } else { res.json(user); } }); });
app.get('/user/:id', (req, res) => { const id = req.params.id; // No validation database.findUserById(id).then(user => { if (!user) { res.status(404).send('User not found'); } else { res.json(user); } }); });
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| No validation before DB call | N/A (server-side) | N/A | N/A | [X] Bad |
| Validation middleware before DB call | N/A (server-side) | N/A | N/A | [OK] Good |