Content Negotiation
Négociation de contenu
La négociation de contenu est la façon dont HTTP choisit une version d'une ressource à partir des préférences du client et des formats disponibles du serveur.
Un autre exemple
Une API de rapport envoie `application/json` ou `text/csv` selon `Accept`. Elle retourne 406 si aucune des deux n'est acceptable et ajoute `Vary: Accept`. Cela empêche un cache d'envoyer du CSV à un client JSON. La langue est choisie séparément, et chaque réponse a un `Content-Type` clair.
Parties principales
- 01Préférences du client
- 02Représentations disponibles
- 03Réponse sélectionnée et Vary
Utilisez-le lorsque
Utilisez des en-têtes de requête standard lorsqu'une ressource a réellement des versions différentes de média, de langue, d'encodage ou de préférence.
Ne l'utilisez pas lorsque
Ne créez pas de versions que les caches ne peuvent pas distinguer. Ne ignorez pas silencieusement un type de média requis que le serveur ne prend pas en charge.
Nom utilisé dans le code
Accept / Accept-Language / Accept-Encoding + Content-Type / Content-Language + Vary Avant d'expédier
Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback.
Outcome: Complete the task with Négociation de contenu (Content Negotiation). User context: Une API de rapport envoie `application/json` ou `text/csv` selon `Accept`. Elle retourne 406 si aucune des deux n'est acceptable et ajoute `Vary: Accept`. Cela empêche un cache d'envoyer du CSV à un client JSON. La langue est choisie séparément, et chaque réponse a un `Content-Type` clair. Technical concept or control: Négociation de contenu (Content Negotiation). Why it fits: Utilisez des en-têtes de requête standard lorsqu'une ressource a réellement des versions différentes de média, de langue, d'encodage ou de préférence. Do not use it when: Ne créez pas de versions que les caches ne peuvent pas distinguer. Ne ignorez pas silencieusement un type de média requis que le serveur ne prend pas en charge. Engineering requirements: Define inputs, outputs, contracts, and rules that must always hold. Set authorization and input checks. Define failures, timeouts, retries, one-time effects, data moves, and compatibility limits. Operations: Add useful signals and logs that hide sensitive data. Set capacity limits and write an operator guide. Test recovery and rollback. Acceptance criteria: Contract and failure-path tests pass. Data and authorization rules still hold during retries and partial failures. Check performance limits, monitoring, recovery, and rollback. Evidence and limits (evidence boundary): La norme couvre uniquement le champ d'application énuméré. Elle ne choisit ni le style visuel, ni la décision de produit, ni l'exemple de Vibulary. Unknowns to confirm: Where the code runs, data stores, traffic shape, consistency needs, and the security boundary. Also confirm the compatibility period, service goals, and rollback limits.
Vérifiez cette demande
Review how Négociation de contenu (Content Negotiation) is used now. Definition: La négociation de contenu est la façon dont HTTP choisit une version d'une ressource à partir des préférences du client et des formats disponibles du serveur. Release checks: Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback. Before changing code, list the evidence, gaps, severity, and the smallest safe fix.