Primeiramente pode-se afirmar que o protocolo de rede HTTP é a estrada que sustenta toda a comunicação e funcionamento de sistemas web e a comunicação de APIs REST ou SOAP entre aplicações móveis e servidores de backend.
Em outras palavras:
Praticamente toda informação na Internet trafega usando o protocolo HTTP
mazer jr, A.
Conceito
HTTP é a sigla para HyperText Transfer Protocol que em português significa “Protocolo de Transferência de Hipertexto”.
É um protocolo de comunicação entre sistemas de informação que permite a transferência de dados entre redes de computadores, sendo o protocolo base para o desenvolvimento de sistemas para web.
É utilizado para transferência de páginas HTML do computador para a Internet. Por isso, os endereços dos websites (URL) utilizam no início a expressão “http://”, definindo o protocolo usado. Esta informação é necessária para estabelecer a comunicação entre a URL e o servidor Web que armazena os dados, enviando então a página HTML solicitada pelo usuário. Para que a transferência de dados na Internet seja realizada, o protocolo HTTP necessita estar agregado a outros dois protocolos de rede: TCP (Transmission Control Protocol) e IP (Internet Protocol).
Protocolo HTTPS
A versão segura para trafegar informações, usando este protocolo, chama-se HTTPS, sigla para Hyper Text Transfer Protocol Secure, que em português significa Protocolo de Transferência de Hipertexto Seguro. Faz a encriptação dos dados fornecidos, exigindo autenticação, aplicando ainda outras ferramentas que garantem a segurança dos dados enviados e recebidos pelas aplicações cliente e servidor.
É obtido com a combinação dos protocolos HTTP e SSL (Secure Sockets Layers – Camadas de Sockets Seguros). Os sites assegurados por este protocolo, iniciam com “https://” antes do endereço URL.
Como funciona o Protocolo HTTP
O Protocolo HTTP funciona como um protocolo de requisição <-> resposta no modelo cliente-servidor. O cliente mais comum, um navegador web, por exemplo, se comunica por meio de mensagens, chamadas requisições HTTP, a uma aplicação em um computador que hospeda um programa web, ou um site, que recebe a requisição, processa e retorna com a resposta HTTP. A resposta contém informações de estado completas sobre a requisição e pode também conter o conteúdo solicitado no corpo de sua mensagem.
Segue um modelo cliente-servidor clássico, onde um cliente abre uma conexão, executa uma requisição e espera até receber uma resposta. É um protocolo que não mantém o estado de conexão, ou stateless protocol. Isto significa que o servidor não mantém aberta a conexão com o cliente, ou nenhum dado entre duas requisições (state – estado).
Como já mencionado, é a base para as trocas de dados na Web, sendo que o mais comum é o transporte de documentos HTML completos, que são reconstruídos a partir de diferentes subdocumentos obtidos, como por exemplo texto, descrição do layout, imagens, vídeos, scripts e muito mais.

Características do protocolo HTTP
- Simplicidade: foi projetado para ser simples e legível às pessoas. As mensagens HTTP podem ser lidas e entendidas por ser humano, tornando fácil seu uso para desenvolvimento e testes;
- Extensibilidade: com o uso de cabeçalhos é possível introduzir variáveis de cabeçalho personalizadas, pelo simples acordo entre um cliente e um servidor sobre a nova semântica. Por exemplo: informando uma chave de acesso secreta a determinado recurso;
- Sessões: HTTP não tem estado, isso traz um problema imediato para usuários que interagem com algumas páginas como usando um carrinho de compras onde o servidor precisa identificar o cliente entre suas diversas requisições. Desta forma a utilização de cookies permite que as sessões tenham estados. Usando a extensibilidade dos cabeçalhos, cookies são adicionados ao fluxo do HTTP (o cliente insere a mesma identificação de cookie em cada requisição), com a finalidade de criação de sessão e sua recuperação em cada requisição HTTP ao servidor, compartilhando assim o mesmo contexto, ou o mesmo estado.
Requisição / Resposta
O fluxo de comunicação é realizado a partir do cliente, que envia uma requisição ao servidor, usando uma requisição HTTP. Logo depois, o servidor interpreta, processa e posteriormente devolve a requisição com uma “resposta HTTP”. Em ambos os tráfegos “mensagens HTTP” são colocadas no fluxo.

As requisições consistem dos seguintes elementos:
- O método, definido por um verbo: GET, POST, DELETE, PUT, o qual define qual operação o cliente quer fazer;
- O caminho do recurso, a URL;
- A versão do protocolo HTTP;
- Variáveis de Cabeçalho, opcionais, que contém informações adicionais para os servidores;
- Um corpo de dados, e alguns casos, como para método
POST
, que contém o informações para recurso requisitado.
Métodos de requisição HTTP
Também chamado de verbo de requisição, define a ação que o cliente está solicitando para execução no servidor.
Cabe ao serviço que irá atender à requisição, tratar a maneira como processar e responder de acordo com o método HTTP informado no cabeçalho. Você pode entender melhor como utilizar no artigo APIs REST e RESTFul.
A seguir os métodos mais utilizados são:
- GET
Solicita a leitura de informações de um recurso no servidor. Por exemplo: uma página estática HTML, um arquivo de imagem, um registro de um sistema. - POST
Enviar informações para o servidor, que as interpretará de acordo com o recurso recebido, em geral, persistindo estes dados em um banco de dados. Por exemplo: dados de um formulário de cadastro, dados de um formulário de login. - PUT
Similar ao POST, poŕem os dados enviados são informações que substituirão um recurso existente. Portanto, ao enviar os dados, o servidor encontrará o recurso e irá alterar, por exemplo, apenas alguns campos de um registro de banco de dados. - PATCH
Similar ao PUT, porém envia informações para alterar partes de um recurso. Por exemplo, ao enviar somente dados para a alteração de senha e não de todo o cadastro de usuário. - DELETE
Solicita a exclusão de um recurso específico do servidor. Por exemplo: excluir um item de um carrinho de compras.
Cabeçalhos

Respostas consistem dos seguintes elementos:
- A versão do protocolo HTTP;
- Status de resposta, um código indicando se a requisição foi bem sucedida, erro ou ação a ser seguida pelo cliente como redirecionamento de requisição;
- Uma mensagem de status, descrição informal sobre o código de status;
- variáveis de cabeçalho;
- Opcionalmente, um corpo com dados do recurso requisitado, em geral, um documento HTML completo.

Status de Resposta
Os status de retorno indicam se a requisição foi atendida com sucesso e são agrupados em cinco classes, identificadas pelo primeiro dígito. Ou seja, o cliente pode utilizar o status de resposta para realizar ações ou apresentar mensagens melhor contextualizadas para o usuário. Dessa forma padronizando o tratamento das respostas recebidas às suas requisições.
Os códigos de status são divididos em grupos como apresentados a seguir:
- 1xx — Informação
- 2xx — Sucesso
- 3xx — Redirecionamento
- 4xx — Erro do cliente
- 5xx — Erro do servidor
Alguns códigos em cada grupo são usados com mais frequência, consequentemente, mais conhecidos que os demais, por exemplo:
- 200 OK: A requisição foi atendida com sucesso.
- 301 Moved Permanently: O recurso mudou permanentemente para uma nova URI. A nova URI deve ser retornada na resposta.
- 302 Found: O recurso mudou temporariamente de URI.
- 400 Bad Request: A requisição está mal formada e não pode ser entendida pelo servidor.
- 403 Forbidden: Usuário não autorizado a fazer a operação requisitada.
- 404 Not Found: O recurso requisitado não pode ser encontrado na URI informada.
- 405 Method Not Allowed: O método utilizado na requisição não é permitido no recurso especificado.
- 500 Internal Server Error: O servidor encontrou uma condição inesperada que o impede de executar a requisição.
- 503 Service Unavailable: O servidor está temporariamente indisponível, normalmente devido a sobrecarga ou manutenção.
A lista completa em (Wikipedia 2019 – Lista de status HTTP).
Em síntese, podemos afirmar que para o desenvolvedor de aplicações Web ou aplicativos móveis, é essencial conhecer e dominar os conceitos do Protocolo HTTP.
Por meio do estudo deste protocolo é possível explorar com qualidade todas as suas características e, portanto, construir softwares robustos e seguros, o que, acima de tudo, resulta em produtos de sistema de alta qualidade.
Referências
MDN Web Docs 2019 – HTTP – https://developer.mozilla.org/pt-BR/docs/Web/HTTP
Web Dev Drops 2019 – https://www.webdevdrops.com/http-desenvolvedores-frontend/
Wikipedia 2019 – Lista de Status HTTP – https://pt.wikipedia.org/wiki/Lista_de_c%C3%B3digos_de_estado_HTTP
Mantenha-se atualizado
Não esqueça de me seguir no Twitter e assinar o Canal Mazer.dev no Youtube para receber atualizações de novos artigos, vídeo aulas e cursos gratuitos em desenvolvimento e engenharia de software.
Resposta: Extensões de domínio para usar em desenvolvimento local - MAZER.DEV
Resposta: Cache temporário das credenciais GIT - username e password - MAZER.DEV
Resposta: O que é Latência e Largura de Banda - MAZER.DEV
Resposta: Aumentando o limite de memória no PHP para Wordpress - MAZER.DEV
Resposta: REST - MAZER.DEV