O mesmo valor opaco pode funcionar em uma validação de cache e falhar em uma pré-condição de escrita. O RFC 9110 define comparações diferentes para If-None-Match e If-Match.

Validador atual Cabeçalho enviado Resultado da comparação
W/"v1" If-None-Match: "v1" Coincide pela comparação fraca
W/"v1" If-Match: "v1" Falha pela comparação forte
"v1" If-Match: "v1" Coincide pela comparação forte

No primeiro caso, uma leitura GET pode receber 304 e reaproveitar a representação armazenada. No segundo, uma edição deve falhar na pré-condição, normalmente com 412. O terceiro permite que o servidor continue o processamento da edição, sujeito às demais verificações.

O que o teste precisa controlar

Crie uma rota de teste com uma representação conhecida. Leia o ETag, faça uma edição concorrente e tente gravar com o validador anterior. Depois repita com o validador atualizado. Se a API serve versões com codificações de conteúdo diferentes, revise como gera os validadores fortes para que a identidade da representação continue coerente.

Use a comparação prevista no RFC no servidor. Retirar manualmente o prefixo W/ de todo cabeçalho converte uma comparação forte em outra regra.

RFC 9110, ETag · Pré-condições HTTP

Leia também: JSON Patch com índices de array, test e If-Match