devterview_$ iniciar simulação

Status codes que dizem a verdade

MédioPlenoHTTP

Pergunta

Por que devolver 200 com `{ "error": ... }` no corpo é um problema, e como você escolhe entre 400, 401, 403, 404, 409 e 422?

Resposta esperada

200 com erro no corpo quebra tudo que depende do status: caches, proxies, clientes HTTP, monitoramento — todos acham que deu certo. O status é a primeira informação e tem que ser honesto. Guia rápido: 400 (requisição malformada — JSON inválido, faltou campo obrigatório); 401 (não autenticado — sem credencial ou credencial inválida); 403 (autenticado mas sem permissão pra isso); 404 (recurso não existe — ou, às vezes, 'não existe pra você' pra não vazar); 409 (conflito de estado — criar algo que já existe, edição concorrente); 422 (sintaxe ok mas semanticamente inválido — e-mail com formato certo mas já usado, regra de negócio violada). 5xx é 'a culpa é do servidor'; nunca use 5xx pra erro de validação do cliente.

Por que perguntam isso

Pergunta pleno. O erro que reprova: usar 200 pra tudo ou 500 pra erro de validação. Distinguir 401 x 403 e 400 x 422 é o que separa.

#status-codes#http#erros
publicidade

Perguntas de acompanhamento

Relacionadas