Códigos de status de respostas HTTP
Tags: http, braziliandevs, webdev, httpstatus
Published: 2021-04-10 04:17:57

Talvez não seja de vital importância ser o Google dos códigos de status de resposta do protocolo HTTP, mas é muito importante conhecer os principais e as diferenças sutis entre eles.

É muito importante ser coerente no uso dos códigos para que o cliente não se enrole na mensageiria e consiga gerenciar erros de uma forma fácil e padronizada.

Nesse artigo vamos tratar apenas de alguns dos muitos códigos das 5 classes, esses são os mais utilizados nos sistemas atuais. É recomendado sempre que você use o mais adequado para situação. Nada de colar 400 e 500 em tudo, ok?

### 1xx: Informacional

> Vai ser muito raro encontrar um código desse. Eles são usados para informação.

**100 Continue:** Uma resposta provisória para indicar que tudo ocorreu bem até então e que o cliente pode continuar com a requisição.

**101 Switching Protocol:** Esse código é enviado em resposta a um cabeçalho de solicitação Upgrade pelo cliente, e indica o protocolo a que o servidor está alternando.

**102 Processing (WebDAV):** Este código indica que o servidor recebeu e está processando a requisição, mas nenhuma resposta está disponível ainda.

**103 Early Hints:** Este código tem principalmente o objetivo de ser utilizado com o cabeçalho Link, indicando que o agente deve pré-carregar recursos enquanto o servidor prepara uma resposta.

### 2xx: Sucesso

> Esse é o que sempre esperamos receber! Significa que deu tudo certo com sua solicitação.

**200 OK:** Requisição foi bem sucedida. O significado do sucesso varia de acordo com o método HTTP.

**201 Created:** A requisição foi bem sucedida e um novo recurso foi criado como resultado. Esta é uma típica resposta enviada após uma requisição POST.

**204 No Content:** Não há conteúdo para enviar para esta solicitação, mas os cabeçalhos podem ser úteis. O user-agent pode atualizar seus cabeçalhos em cache para este recurso com os novos.

**206 Partial Content:** Esta resposta é usada por causa do cabeçalho de intervalo enviado pelo cliente para separar o download em vários fluxos. 

### 3xx: Redirecionamento

> Aqui o cliente vai precisar fazer ações extras para completar o pedido e redirecionar a requisição. 

**301 Moved Permanently:** Esse código de resposta significa que a URI do recurso requerido mudou. Provavelmente, a nova URI será especificada na resposta.

**302 Found:** Esse código de resposta significa que a URI do recurso requerido foi mudada temporariamente. Novas mudanças na URI poderão ser feitas no futuro. Portanto, a mesma URI deve ser usada pelo cliente em requisições futuras.

**304 Not Modified:** Essa resposta é usada para questões da cache. Diz ao cliente que a resposta não foi modificada. Portanto, o cliente pode usar a mesma versão em cache de resposta. 

### 4xx: Erro do Cliente

> Essa classe é provavelmente BIOS rsrs. Os códigos devem ser apresentados quando o cliente parecer ter cometido um erro.

**400 Bad Request:** Essa resposta significa que o servidor não entendeu a requisição pois está com uma sintaxe inválida.

**401 Unauthorized:** Embora o padrão HTTP especifique *"unauthorized"*, semanticamente, essa resposta significa *"unauthenticated"*. Ou seja, o cliente deve se autenticar para obter a resposta solicitada.

**403 Forbidden:** O cliente não tem direitos de acesso ao conteúdo portanto o servidor esta rejeitando dar a resposta. Diferente do código 401, aqui a identidade do cliente é conhecida.

**404 Not Found:** O recurso requisitado não foi encontrado, mas pode ser disponibilizado novamente no futuro. 

**406 Not Acceptable:** O recurso solicitado é apenas capaz de gerar conteúdo não aceitáveis de acordo com os cabeçalhos Accept enviados na solicitação. 

### 5xx: Erro do Cliente

> Aqui deu BO, bateu fofo. Essa classe informa que o erro aconteceu do lado do servidor.

**500 Internal Server Error:** Indica um erro do servidor ao processar a solicitação.

**501 Not Implemented:** O método da requisição não é suportado pelo servidor e não pode ser manipulado. Os únicos métodos exigidos que servidores suportem (e portanto não devem retornar este código) são GET e HEAD.

**502 Bad Gateway:** Esta resposta de erro significa que o servidor, ao trabalhar como um gateway a fim de obter uma resposta necessária para manipular a requisição, obteve uma resposta inválida.

**503 Service Unavailable:** O servidor não está pronto para manipular a requisição. Causas comuns são um servidor em manutenção ou sobrecarregado. 

### A Saideira

Essa publicação foi inspirada numa publicação do pessoal da [Codar.me](https://codar.me/). Gosto muito do conteúdo deles, podem acompanhar!