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.
O que é HTTP
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).
O que é o protocolo HTTPS
HTTPS é a versão segura do protocolo para trafegar informações. O acrônimo HTTPS significa 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.
Transferência de documento sobre o Protocolo HTTP (MDN Web Docs 2019)
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 HTTP
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, todos os campos de um registro de banco de dados - excepto pelo seu id.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 HTTP
Cabeçalhos HTTP 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
Comentários