Olá, meus amigos! Neste artigo vamos tratar de um item fundamental na comunicação entre dispostivos na internet: os status code.
Os status code são fundamentais para desenvolvedores e administradores de sistemas, pois fornecem informações claras sobre o estado das requisições, ajudando a identificar problemas e solucioná-los, mantendo as operações em funcionamento.
Neste texto, iremos conhecer as diferentes categorias de status code e seus principais exemplos, detalhando a função de cada um na comunicação entre cliente e servidor, começando pelo básico:
1 – Entendendo o que é um Status Code
Nos dias atuais, praticamente, todos os sistemas e aplicações que usamos estão conectados à internet e comunicam-se com serviços remotos localizados em servidores web. Essa comunicação ocorre através do protocolo de comunicação HTTP e é nesse cenário que surgem os status code.
Os status code (ou códigos de status HTTP) são códigos numéricos retornados por servidores web em resposta as requisições feitas pelos usuários (ou clientes). Esses códigos indicam se uma solicitação HTTP foi bem-sucedida ou não e possuem uma estrutura composta por três dígitos:
-> O primeiro dígito varia de 1 a 5 e indica o tipo de status;
-> O segundo e terceiro dígitos referem-se aos status contemplados dentro do intervalo do primeiro dígito.
Os status code são divididos em cinco categorias principais, que representam os tipos de respostas possíves de um servidor, organizadas da seguinte forma:
| Código | Tipo | Explicação |
| 100 – 199 | Respostas informativas (Informal) | Requisição em processamento pelo servidor |
| 200 – 299 | Respostas bem-sucedidas (Success) | Requisição processada com sucesso pelo servidor |
| 300 – 399 | Mensagens de redirecionamento (Redirection) | Requisição precisa ser redirecionada para ser concluída |
| 400 – 499 | Respostas de erro do cliente (Client Error) | Requisição não pode ser concluída ou possui erro de sintaxe |
| 500 – 599 | Respostas de erro do servidor (Server Error) | Requisição não pode ser concluída por falha no lado do servidor |
2 – Lista de Status Code
Agora, vamos conhecer a lista dos principais Status Code retornados em requisições HTTP com uma breve descrição de cada um deles:
Grupo 1 – Respostas informativas
100 – Continue: O servidor recebeu os cabeçalhos da requisição e o cliente deve prosseguir com o envio do corpo (body). Este status é uma forma de otimização: permite que o cliente verifique se o servidor está disposto a aceitar a solicitação antes de enviar grandes volumes de dados.
101 – Switching Protocols: Indica que o servidor aceitou a mudança de protocolo solicitada pelo cliente através do cabeçalho Upgrade. Frequentemente utilizado para transições como HTTP/1.1 para WebSocket.
102 – Processing: Informa que o servidor recebeu a requisição e está processando-a, mas ainda não possui uma resposta final. Isso evita que o cliente encerre a conexão por tempo limite (timeout) em operações que levam mais tempo.
103 – Early Hints: Utilizado para melhorar a performance. O servidor envia alguns cabeçalhos de resposta (como links de recursos críticos, como CSS ou JS) antes da resposta HTTP final, permitindo que o navegador comece a pré-carregar ativos enquanto o servidor ainda processa a lógica principal.
Grupo 2 – Respostas bem-sucedidas
200 – OK: A requisição foi processada com sucesso e o servidor retornou a representação do recurso solicitado. É o status padrão para a maioria das requisições bem-sucedidas.
201 – Created: A requisição foi bem-sucedida e, como resultado, um novo recurso foi criado no servidor. Comumente utilizado como resposta a métodos POST ou, em alguns casos, a métodos PUT.
202 – Accepted: A requisição foi aceita para processamento, mas o processamento ainda não foi concluído. É ideal para processos em lote ou tarefas assíncronas, onde o servidor não pode garantir o resultado final imediatamente.
204 – No Content: A requisição foi bem-sucedida, mas o servidor não precisa retornar nenhum corpo. É muito utilizado em requisições de atualização ou exclusão (DELETE), onde basta confirmar a execução sem enviar dados extras.
206 – Partial Content: O servidor está entregando apenas uma parte do recurso solicitado. Este status é disparado quando o cliente utiliza o cabeçalho Range na requisição, sendo fundamental para o funcionamento de downloads interrompidos ou streaming de mídia, onde o conteúdo é baixado em blocos.
Grupo 3 – Mensagens de redirecionamento
300 – Multiple Choices: Indica que o recurso solicitado possui mais de uma representação possível. O servidor não força uma escolha, permitindo que o agente do usuário (como o navegador) selecione a melhor opção com base nas preferências do cliente.
301 – Moved Permanently: Informa que o recurso foi transferido permanentemente para uma nova URL. O navegador e os motores de busca devem atualizar seus índices e passar a utilizar o novo endereço a partir de agora. A nova URL é enviada no cabeçalho Location da resposta.
302 Found (ou Moved Temporarily): Indica que o recurso foi movido temporariamente para uma URL diferente. Diferente do 301, o cliente deve continuar utilizando a URL original para requisições futuras, pois o redirecionamento pode mudar a qualquer momento.
307 – Temporary Redirect: Semelhante ao 302, indica um redirecionamento temporário. A principal diferença é que o método HTTP e o corpo da requisição original devem ser mantidos ao repetir o pedido na nova URL. É ideal quando se deseja garantir que o tipo de solicitação (como um POST) não seja alterado pelo navegador.
308 – Permanent Redirect: Funciona como a versão “estrita” do 301. Indica que o recurso foi movido permanentemente para uma nova URL e, ao contrário do 301, exige que o método HTTP e o corpo da requisição original sejam mantidos ao redirecionar.
Grupo 4 – Respostas de erro do cliente
400 – Bad Request: A requisição não pode ser processada devido a um erro do cliente. Pode ser causada por sintaxe malformada, tamanho de cabeçalho excessivo ou dados de formulário inválidos.
401 – Unauthorized: Indica que a requisição exige autenticação. O servidor não pode processar o pedido porque o cliente não forneceu as credenciais de acesso necessárias ou as credenciais apresentadas são inválidas.
403 – Forbidden: O servidor compreendeu a requisição, mas recusa a autorização. Diferente do 401, aqui o servidor sabe quem você é, mas você não tem permissão para acessar aquele recurso específico (por exemplo, um usuário comum tentando acessar um painel administrativo).
404 – Not Found: O servidor não conseguiu encontrar o recurso solicitado. Pode ocorrer por URLs digitadas incorretamente, remoção de arquivos no servidor ou problemas de propagação de domínio.
405 – Method Not Allowed: O método HTTP utilizado (ex: POST, DELETE) é reconhecido pelo servidor, mas não é permitido para o recurso solicitado.
409 – Conflict: Indica que a requisição não pôde ser concluída devido a um conflito com o estado atual do recurso. É comum em sistemas de controle de versão ou edições simultâneas, onde o servidor não consegue mesclar as alterações enviadas.
429 – Too Many Requests: O usuário enviou muitas requisições em um curto período de tempo (limite de taxa excedido). É um mecanismo de proteção para evitar abusos ou sobrecarga no servidor.
Grupo 5 – Respostas de erro do servidor
500 – Internal Server Error: Um erro genérico do servidor. Algo inesperado impediu o processamento da requisição, e o servidor não consegue fornecer detalhes específicos sobre o problema no momento.
501 – Not Implemented: O servidor não reconhece o método HTTP utilizado ou não possui a funcionalidade necessária para atender à requisição. É o oposto do 405.
502 – Bad Gateway: O servidor, atuando como proxy ou gateway, recebeu uma resposta inválida de um servidor “upstream” (o servidor de origem que ele consultou). Geralmente indica um problema de comunicação entre servidores internos.
503 – Service Unavailable: O servidor está temporariamente indisponível para lidar com a requisição. Geralmente ocorre durante janelas de manutenção, reinicializações ou quando o servidor está sobrecarregado.
504 – Gateway Timeout: O servidor, atuando como proxy ou gateway, não recebeu uma resposta em tempo hábil do servidor upstream. Isso indica que a conexão entre os servidores está lenta ou que o servidor de origem demorou muito para processar o pedido.
Esses são os códigos mais conhecidos e usados no dia a dia. Além deles, há muitos outros códigos disponíveis para uso em retornos de aplicações e sistemas web. Para conferir uma lista completa dos status code existentes, confira a documentação do MDN Web Docs, uma das mais melhores e mais completas documentações atualmente.
Os status code são essenciais para monitorar e controlar a troca de informações na web, garantindo transparência e eficiência na comunicação entre clientes e servidores.
Compreender esses códigos é crucial para garantir a manutenção eficaz de sistemas e aplicações web, permitindo diagnósticos rápidos e correções assertivas de eventuais falhas, garantindo o sucesso na gestão de sistemas conectados à internet.
Espero que este texto seja útil de alguma forma para você e contribua com sua jornada acadêmica e profissional!
Gostou do conteúdo? Compartilhe com seus amigos e aproveite para conhecer mais sobre arquitetura de sistemas aqui!