Content Negotiation

Architecture 🟡 Mid

Definition

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.

Termes lies

#architecture#interview#api