Performance: API versioning strategies
MEDIUM IMPACT
This affects the server response time and client load speed by controlling how API versions are handled and routed.
const v1Router = express.Router(); v1Router.get('/resource', (req, res) => { /* v1 handler */ }); const v2Router = express.Router(); v2Router.get('/resource', (req, res) => { /* v2 handler */ }); app.use('/api/v1', v1Router); app.use('/api/v2', v2Router);
app.use('/api', (req, res, next) => { if(req.headers['api-version'] === '1') { // handle v1 routes } else if(req.headers['api-version'] === '2') { // handle v2 routes } else { res.status(400).send('Unsupported API version'); } });
| Pattern | Routing Complexity | Conditional Checks | Cache Friendliness | Verdict |
|---|---|---|---|---|
| Header-based versioning with middleware checks | High | Many per request | Low | [X] Bad |
| Query parameter versioning with conditional logic | Medium | Some per request | Medium | [!] OK |
| URL path versioning with separate routers | Low | Minimal | High | [OK] Good |