Código de status HTTP · Erros do cliente (4xx)
Erro 424 Failed Dependency
O erro 424 Failed Dependency significa que o servidor não executou uma ação porque ela dependia de outra ação do mesmo pedido, e essa outra falhou. Ele aparece quase sempre dentro de respostas 207 Multi-Status do WebDAV, ao lado da entrada que causou o erro de verdade.
| Classe | 4xx, Erros do cliente |
|---|---|
| Definido em | RFC 4918 §11.4 |
| Pode ir para o cache por padrão | Só com Cache-Control ou Expires explícitos |
| Pode repetir o pedido | Só depois de corrigir a ação da qual dependia; reenviar o lote igual falha do mesmo jeito |
| Cabeçalhos relevantes | Nenhum específico deste código |
O que significa o 424
A RFC 4918, seção 11.4, dá o exemplo clássico: o PROPPATCH é atômico, então se definir uma propriedade falha, todas as outras mudanças do mesmo pedido são reportadas como 424. As entradas 424 são efeito colateral; a que tem outro código (403, 409, 507) é o problema real.
Fora do WebDAV, algumas APIs de lote e de workflow usam 424 para uma etapa pulada porque a anterior falhou. É uma extensão da ideia, não algo que a RFC define.
Causas comuns
Se você administra o servidor
- Uma propriedade do PROPPATCH é protegida ou inválida, o que derruba a atualização atômica inteira e marca o resto como 424.
- Numa API de lote, uma operação anterior (criar o cliente) falhou, então a dependente (criar a fatura desse cliente) nem foi tentada.
Como resolver
Se você administra o servidor
- Ignore as entradas 424 num primeiro momento e procure no corpo do 207 a entrada com outro status; corrigir essa resolve as demais.
- Ao projetar um endpoint de lote, reporte a etapa que falhou com o código dela e as puladas com 424, para o cliente separar causa de consequência.
Como diagnosticar o 424
É raro mandar 424 na linha de status. Ele vive dentro do corpo de um 207 Multi-Status, com um status por recurso ou propriedade, como nesta resposta de PROPPATCH.
curl -X PROPPATCH https://dav.example.com/docs/report.odt \
-H 'Content-Type: application/xml' --data @props.xml
# HTTP/1.1 207 Multi-Status
# <D:propstat>
# <D:prop><D:getetag/></D:prop>
# <D:status>HTTP/1.1 403 Forbidden</D:status> <- the real cause
# </D:propstat>
# <D:propstat>
# <D:prop><Z:author/></D:prop>
# <D:status>HTTP/1.1 424 Failed Dependency</D:status> <- skipped
# </D:propstat>Costuma ser confundido com
- 424 vs 207
- O 207 é o envelope que carrega um status por item; o 424 é um dos status que podem aparecer lá dentro.
- 424 vs 502
- O 502 indica que um servidor upstream respondeu mal; o 424 indica que outra ação dentro do mesmo pedido falhou, não outro servidor.
Perguntas frequentes
- Por que todas as propriedades do meu PROPPATCH falharam com 424?
- O PROPPATCH é tudo ou nada. Uma propriedade falhou por um motivo real, e a RFC 4918 manda o servidor reportar as outras como 424 porque dependiam do pedido inteiro dar certo. Procure a entrada com outro código.
- Uma API REST deve usar 424?
- Pode, em operações de lote ou em várias etapas, quando uma etapa foi pulada porque a anterior falhou. Para uma chamada isolada a outro serviço que falhou, 502 ou 503 descreve melhor a situação.
- O erro 424 é problema do cliente ou do servidor?
- Está na faixa 4xx, então a correção normalmente está no pedido: a ação que falhou de fato foi recusada por causa do que o cliente pediu, como alterar uma propriedade protegida.
Revisado em por Arielton Oberek.