Código de status HTTP · Sucesso (2xx)
207 Multi-Status
O 207 Multi-Status significa que o corpo da resposta traz códigos de status separados para várias operações, porque um código só não descreve todas. Vem do WebDAV (RFC 4918), em que um PROPFIND ou um COPY em massa devolve um documento XML multistatus com um status por recurso.
| Classe | 2xx, Sucesso |
|---|---|
| Definido em | RFC 4918 §11.1 |
| Pode ir para o cache por padrão | Só com Cache-Control ou Expires explícitos |
| Pode repetir o pedido | Repita só as operações cujo status próprio, no corpo, falhou |
| Cabeçalhos relevantes |
|
O que significa o 207
A RFC 4918, seções 11.1 e 13, define o corpo: uma raiz DAV:multistatus com um DAV:response por recurso, cada um com um href e uma linha de status ou blocos propstat. O 207 no topo não diz se as partes deram certo; o cliente precisa ler cada entrada, onde pode encontrar 200, 403, 423 Locked ou 424 Failed Dependency.
Algumas APIs JSON usam o 207 em endpoints de lote. Isso não é padronizado: o formato do JSON é o que a API documentar, então clientes genéricos não conseguem interpretar.
Quando usar
- Servidores WebDAV respondendo PROPFIND, PROPPATCH ou COPY, MOVE e DELETE em coleções com resultados mistos.
- APIs de lote em que alguns itens dão certo e outros falham, desde que o cliente conheça o formato do corpo.
Como enviar um 207
O status de cada parte fica no corpo, então o exemplo mostra o formato XML uma vez em vez de repetir em cada framework.
app.delete('/files/', (req, res) => {
res.status(207).type('application/xml').send(`<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/files/a.txt</D:href>
<D:status>HTTP/1.1 200 OK</D:status>
</D:response>
<D:response>
<D:href>/files/locked.txt</D:href>
<D:status>HTTP/1.1 423 Locked</D:status>
</D:response>
</D:multistatus>`);
});Costuma ser confundido com
- 207 vs 200
- O 200 informa um resultado só para o pedido inteiro; o 207 exige olhar dentro do corpo o resultado de cada item.
- 207 vs 208
- O 208 Already Reported só aparece dentro de um corpo 207, marcando membros já listados antes na mesma resposta.
Perguntas frequentes
- Uma resposta 207 significa que tudo deu certo?
- Não. Ela só diz que o corpo tem vários resultados. Cada DAV:response traz o próprio status, e qualquer um pode ser um erro como 403 ou 423.
- Posso usar 207 numa API REST em JSON?
- Pode, mas fora do WebDAV não existe formato padrão de corpo, então documente bem. Muitas APIs preferem devolver 200 com um array de resultados por item.
- Qual especificação define o 207 Multi-Status?
- A RFC 4918, do WebDAV, na seção 11.1, com o formato do corpo na seção 13. Ele surgiu na RFC 2518, em 1999.
Revisado em por Arielton Oberek.