blog
Fundamentos

HTTP Status Codes: o que significam 200, 404 e 500

Entenda os códigos de resposta HTTP que você vê no console do navegador.

hidden: true

HTTP Status Codes

Quando seu app faz uma requisição, o servidor responde com um código numérico. Esse código diz se deu certo ou errado.

Os mais comuns

2xx — Sucesso ✅

Código Significado
200 OK — tudo certo
201 Criado — recurso novo criado com sucesso
204 Sem conteúdo — deu certo mas sem resposta

3xx — Redirecionamento ↪️

Código Significado
301 Movido permanentemente
302 Redirecionamento temporário
304 Não modificado (use o cache)

4xx — Erro do cliente ❌

Código Significado
400 Bad Request — dados enviados inválidos
401 Não autorizado — precisa fazer login
403 Proibido — logado mas sem permissão
404 Não encontrado — URL não existe
429 Muitas requisições — rate limit

5xx — Erro do servidor 💥

Código Significado
500 Erro interno — bug no servidor
502 Bad Gateway — servidor fora do ar
503 Serviço indisponível — sobrecarga
504 Gateway Timeout — servidor demorou demais

Na prática

const response = await fetch("/api/users");
 
if (response.ok) {
  // 200-299: sucesso
  const data = await response.json();
} else if (response.status === 404) {
  // Recurso não encontrado
  console.log("Usuário não encontrado");
} else if (response.status === 401) {
  // Precisa autenticar
  redirect("/login");
} else {
  // Outro erro
  console.error("Erro:", response.status);
}

No backend

// Next.js API Route
export async function GET() {
  return Response.json({ users: [] }, { status: 200 });
}
 
export async function POST(req: Request) {
  const data = await req.json();
  if (!data.email) {
    return Response.json({ error: "Email obrigatório" }, { status: 400 });
  }
  const user = await db.user.create({ data });
  return Response.json(user, { status: 201 });
}

Dica para debug

Quando seu app dá erro, o status code é a primeira pista:

  • 4xx = problema no frontend (dados errados, URL errada, sem auth)
  • 5xx = problema no backend (bug no código, banco fora do ar)