Content Negotiation
Negoziazione dei contenuti
La negoziazione dei contenuti è il modo in cui HTTP sceglie una versione di una risorsa dalle preferenze del client e dai formati disponibili del server.
Un altro esempio
Un'API di report invia `application/json` o `text/csv` in base a `Accept`. Restituisce 406 se nessuno dei due funziona e aggiunge `Vary: Accept`. Questo impedisce a una cache di inviare CSV a un client JSON. La lingua viene scelta separatamente e ogni risposta ha un chiaro `Content-Type`.
Parti principali
- 01Preferenze client
- 02Rappresentazioni disponibili
- 03Risposta selezionata e Vary
Usalo quando
Usa intestazioni di richiesta standard quando una risorsa ha davvero versioni diverse per media, lingua, codifica o preferenze.
Non usarlo quando
Non creare versioni che le cache non possono distinguere. Non ignorare silenziosamente un tipo di media richiesto che il server non supporta.
Nome usato nel codice
Accept / Accept-Language / Accept-Encoding + Content-Type / Content-Language + Vary Prima di spedire
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 Negoziazione dei contenuti (Content Negotiation). User context: Un'API di report invia `application/json` o `text/csv` in base a `Accept`. Restituisce 406 se nessuno dei due funziona e aggiunge `Vary: Accept`. Questo impedisce a una cache di inviare CSV a un client JSON. La lingua viene scelta separatamente e ogni risposta ha un chiaro `Content-Type`. Technical concept or control: Negoziazione dei contenuti (Content Negotiation). Why it fits: Usa intestazioni di richiesta standard quando una risorsa ha davvero versioni diverse per media, lingua, codifica o preferenze. Do not use it when: Non creare versioni che le cache non possono distinguere. Non ignorare silenziosamente un tipo di media richiesto che il server non supporta. 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): Lo standard copre solo l'ambito elencato. Non sceglie lo stile visivo, la decisione sul prodotto o l'esempio di vocabolario. 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.
Controlla questa richiesta
Review how Negoziazione dei contenuti (Content Negotiation) is used now. Definition: La negoziazione dei contenuti è il modo in cui HTTP sceglie una versione di una risorsa dalle preferenze del client e dai formati disponibili del server. 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.