🌐 Protocolo Web

HTTP Status Codes

Entenda os códigos de status HTTP, como funcionam as requisições web e o que cada código significa para suas aplicações.

5 Categorias
60+ Códigos
HTTP/3 Versão Atual

📡 O que é HTTP?

🔗

Protocolo de Comunicação

HTTP (HyperText Transfer Protocol) é o protocolo usado para transferir dados na web. Toda vez que você acessa um site, seu navegador faz requisições HTTP.

📤📥

Request & Response

A comunicação HTTP funciona em pares: o cliente faz uma requisição (request) e o servidor retorna uma resposta (response).

🔢

Status Codes

Cada resposta inclui um código de status de 3 dígitos que indica se a requisição foi bem-sucedida, redirecionada, ou se houve erro.

🔒

HTTPS

HTTPS é a versão segura do HTTP, usando criptografia SSL/TLS para proteger os dados transferidos entre cliente e servidor.

🛠️ Métodos HTTP

Os métodos HTTP indicam a ação desejada sobre um recurso. Cada método tem uma semântica específica.

GET Seguro

Solicita dados de um recurso. Não deve modificar dados.

GET /api/users/123
POST Modifica

Envia dados para criar um novo recurso no servidor.

POST /api/users { "name": "João", "email": "joao@email.com" }
PUT Modifica

Substitui completamente um recurso existente.

PUT /api/users/123 { "name": "João Silva", "email": "joao@email.com" }
PATCH Modifica

Atualiza parcialmente um recurso existente.

PATCH /api/users/123 { "name": "João Carlos" }
DELETE Modifica

Remove um recurso do servidor.

DELETE /api/users/123
OPTIONS Seguro

Retorna os métodos HTTP permitidos para um recurso.

OPTIONS /api/users

📊 Categorias de Status

1XX

Informacional

Requisição recebida, processamento continua

2XX

Sucesso

Requisição recebida, entendida e aceita

3XX

Redirecionamento

Ação adicional necessária para completar

4XX

Erro do Cliente

Requisição contém erro de sintaxe ou não pode ser atendida

5XX

Erro do Servidor

Servidor falhou ao processar requisição válida

1XX Informacional

100

Continue

O servidor recebeu os headers e o cliente deve continuar enviando o body da requisição.

101

Switching Protocols

O servidor está mudando de protocolo conforme solicitado pelo cliente (ex: HTTP para WebSocket).

102

Processing

O servidor está processando a requisição, mas ainda não há resposta disponível.

2XX Sucesso

202

Accepted

Requisição aceita para processamento, mas ainda não concluída.

203

Non-Authoritative Information

A resposta foi modificada por um proxy ou servidor intermediário.

206

Partial Content

O servidor está entregando apenas parte do recurso (usado em downloads resumíveis).

3XX Redirecionamento

300

Multiple Choices

Existem múltiplas opções de recurso que o cliente pode escolher.

303

See Other

O cliente deve fazer GET em outra URL para obter o recurso.

307

Temporary Redirect

Como 302, mas garante que o método HTTP não seja alterado.

308

Permanent Redirect

Como 301, mas garante que o método HTTP não seja alterado.

4XX Erro do Cliente

402

Payment Required

Reservado para uso futuro. Usado por algumas APIs para indicar pagamento necessário.

405

Method Not Allowed

O método HTTP usado não é permitido para este recurso.

408

Request Timeout

O servidor fechou a conexão porque a requisição demorou demais.

410

Gone

O recurso existiu, mas foi permanentemente removido.

415

Unsupported Media Type

O formato do payload não é suportado (ex: enviou XML, mas só aceita JSON).

5XX Erro do Servidor

501

Not Implemented

O servidor não suporta a funcionalidade necessária para atender a requisição.

505

HTTP Version Not Supported

O servidor não suporta a versão HTTP usada na requisição.

📋 Headers HTTP Comuns

📤 Request Headers

Authorization Token de autenticação
Content-Type Tipo de dado enviado (application/json)
Accept Tipos de resposta aceitos
User-Agent Informações do cliente/browser
Cache-Control Diretivas de cache

📥 Response Headers

Content-Type Tipo do conteúdo retornado
Content-Length Tamanho do body em bytes
Set-Cookie Define cookies no cliente
Location URL para redirecionamento
Access-Control-* Headers CORS

💻 Exemplos Práticos

Fetch API (JavaScript)

// GET Request fetch('https://api.exemplo.com/users') .then(response => { console.log(response.status); // 200 return response.json(); }) .then(data => console.log(data)) .catch(error => console.error(error)); // POST Request fetch('https://api.exemplo.com/users', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer token123' }, body: JSON.stringify({ name: 'João', email: 'joao@email.com' }) });

Tratamento de Erros

async function fetchData(url) { const response = await fetch(url); if (response.status === 200) { return response.json(); } if (response.status === 401) { throw new Error('Não autorizado'); } if (response.status === 404) { throw new Error('Recurso não encontrado'); } if (response.status >= 500) { throw new Error('Erro no servidor'); } }

📋 Cheat Sheet Rápido

200 OK Tudo certo!
201 Created Recurso criado
204 No Content Sucesso, sem body
301 Moved Mudou permanente
304 Not Modified Use o cache
400 Bad Request Requisição inválida
401 Unauthorized Precisa autenticar
403 Forbidden Sem permissão
404 Not Found Não existe
422 Unprocessable Dados inválidos
429 Too Many Rate limit
500 Server Error Bug no servidor
502 Bad Gateway Proxy falhou
503 Unavailable Fora do ar