Content Negotiation
Architecture 🟡 MidDefinition
Mecanisme HTTP ou le client et le serveur se mettent d'accord sur le format de la reponse via les headers Accept et Content-Type.
Analogie
Commander dans un restaurant multilangue : tu demandes le menu en français, on te le donne en français.
Exemple de code
// Client
Accept: application/json
// Serveur
app.get('/users', (req, res) => {
if (req.accepts('json')) res.json(users);
else if (req.accepts('xml')) res.send(toXml(users));
else res.status(406).end();
});
Cas d'usage
APIs qui doivent supporter plusieurs formats (JSON, XML, CSV) pour differents clients.
Anti-pattern
Ignorer le header Accept et toujours renvoyer JSON — mauvaise experience pour les clients non-JSON.