Content Negotiation
Negociação de conteúdo
A negociação de conteúdo é como o HTTP escolhe uma versão de um recurso a partir das preferências do cliente e dos formatos disponíveis no servidor.
Outro exemplo
Uma API de relatório envia `application/json` ou `text/csv` com base no `Accept`. Retorna 406 se nenhum dos dois funcionar e adiciona `Vary: Accept`. Isso impede que um cache envie CSV para um cliente JSON. O idioma é escolhido separadamente e toda resposta tem um `Content-Type` claro.
Partes principais
- 01Preferências do cliente
- 02Representações disponíveis
- 03Resposta selecionada e Variar
Use-o quando
Use cabeçalhos de solicitação padrão quando um recurso tiver realmente diferentes versões de mídia, idioma, codificação ou preferência.
Não o use quando
Não faça versões que os caches não consigam distinguir. Não ignore silenciosamente um tipo de mídia obrigatório que o servidor não suporta.
Nome usado no código
Accept / Accept-Language / Accept-Encoding + Content-Type / Content-Language + Vary Antes de lançar
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 Negociação de conteúdo (Content Negotiation). User context: Uma API de relatório envia `application/json` ou `text/csv` com base no `Accept`. Retorna 406 se nenhum dos dois funcionar e adiciona `Vary: Accept`. Isso impede que um cache envie CSV para um cliente JSON. O idioma é escolhido separadamente e toda resposta tem um `Content-Type` claro. Technical concept or control: Negociação de conteúdo (Content Negotiation). Why it fits: Use cabeçalhos de solicitação padrão quando um recurso tiver realmente diferentes versões de mídia, idioma, codificação ou preferência. Do not use it when: Não faça versões que os caches não consigam distinguir. Não ignore silenciosamente um tipo de mídia obrigatório que o servidor não suporta. 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): O padrão cobre apenas o escopo listado. Ele não escolhe o estilo visual, decisão do produto ou exemplo 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.
Conferir este pedido
Review how Negociação de conteúdo (Content Negotiation) is used now. Definition: A negociação de conteúdo é como o HTTP escolhe uma versão de um recurso a partir das preferências do cliente e dos formatos disponíveis no servidor. 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.