Neste artigo, o dataholic Vinícius Medeiros, vai nos ajudar a entender finalmente o que é, e por que devemos usar HTPP. Boa leitura!
Hypertext Transfer Protocol, no português Protocolo de transferência de hipertexto, é o protocolo principal de comunicação entre computadores na internet. Ele possibilita a busca de recursos como, por exemplo, documentos em HTML, dados em JSON ou XML. Mas, como isso funciona por debaixo dos panos?
O HTTP é um protocolo na camada de aplicação, logo deve ser implementado nos softwares responsáveis por essa comunicação, como servidores web e navegadores. Eles vão trabalhar com mais alguns protocolos, tendo um destaque para o TCP (Transmission Control Protocol) e o IP (Internet Protocol) e TLS, que será explicado nesse artigo.
A comunicação realizada pelo HTTP segue um modelo de Request / Response (Pedido e resposta), seguindo a arquitetura cliente-servidor, onde o cliente é o usuário que faz a requisição e os servidores atendem a essas requisições respondendo com o serviço que foi solicitado. Assim que a resposta é recebida pelo cliente, a comunicação é encerrada. Em comparação, pode-se citar o modelo de comunicação via Streaming de dados, em que o cliente se conecta com o servidor e mantém essa conexão de forma contínua, por exemplo, durante a exibição de vídeos no Youtube ou em lives na Twitch.
Entre o cliente e o servidor, existem diversas entidades, conhecidas como proxies, que podem executar diferentes operações até que a mensagem seja entregue.
O HTTP é um protocolo Stateless, ou seja, quando o computador manda uma requisição para o servidor é como se fosse a primeira vez, pois dentro do protocolo não existe um estado da comunicação, não conseguindo identificar se é a primeira requisição ou a centésima requisição.
Existem alguns métodos do HTTP, são eles:
GET: Solicita a representação de um recurso, essas requisições devem retornar apenas dados.
POST: É utilizado para submeter uma entidade a um recurso específico, causando uma mudança no estado do recurso ou até efeitos colaterais no servidor.
PUT: Substitui todas as representações atuais pelos dados da requisição.
DELETE: Remove um recurso específico.
TRACE: Executa um teste de chamada loopback junto com o caminho para o recurso destino.
OPTIONS: É utilizado para descrever as opções de comunicação para o recurso de destino.
CONNECT: Estabelece uma ponte para o servidor identificado pelo recurso de destino.
HEAD: Solicita uma resposta igual ao método GET, mas sem conter o corpo da resposta.
PATCH: É usado para aplicar modificações parciais em um recurso.
Agora podemos ver um exemplo de resposta servidor HTTP com status code 200, representando que a resposta foi realizada com sucesso.
Grupo de status HTTP:
1XX - Informação
2XX - Sucesso
3XX - Redirecionamento
4XX - Erro no Cliente
5XX - Erro no servidor
Nesse site podemos ver todos esses status de forma mais descontraída
Nomeação dos dados que pertencem a uma requisição HTTP
- Query String Params: Parâmetros que são informados na rota após o sinal de interrogação (?). Geralmente, são utilizados para filtros e paginação.
Ex: https://exemplo.com/rota?page=2&name=Kleber&idade=18
- Route params: Parâmetros utilizados para identificar recursos.
Ex: https://exemplo.com/perfil/:id/edit
- Body: Corpo da requisição ou da resposta.
Ex: se eu cadastrar um usuário em um sistema, preciso enviar seus dados. Estes dados são enviados através do body.
- Headers: Informações adicionais que não aparecem nos outros parâmetros. Geralmente são usadas para autenticação, ou para informar detalhes da origem da requisição ou resposta.
Mas e o HTTPs?
Hoje muita coisa na web está migrando para HTTPs pela segurança que ele proporciona através da criptografia. Mas, o que é o HTTPs?
O HTTPs é um protocolo utilizado em sites que utilizam informações sensíveis, como senhas e dados pessoais. O protocolo HTTPs se difere do HTTP por possuir recursos de segurança, trazendo uma maior segurança ao site. Ele realiza a criptografia dos dados, utilizando o protocolo TLS (Transport Layer Security), em português: Segurança na Camada de Transporte, que é a camada onde transitam os dados de uma requisição HTTP.
Tudo é feito por meio da criptografia de dados, para a troca de informações é necessário que haja uma autenticação de ambos.
Tudo que o HTTPS oferece será útil tanto para os donos do site, como para os usuários. Quando um site possui HTTPS eleva as chances de subirem no ranking de buscas. Já para os usuários que navegam em sites HTTPS, aumenta significativamente a segurança de navegação, pois com essa camada de segurança poderemos ficar mais tranquilos em relação a malwares e pessoas má intencionadas.
É muito importante não nos prendermos a segurança que o HTTPS proporciona, temos que ficar atentos a tentativas de fraude. Alguns sites podem “imitar” o uso do cadeado na url para fingir o uso de HTTPS. Por isso é necessário acessar sites verdadeiros e com conexão segura.