Parte 1: Protocolo HTTP
Tags: http, beginners, braziliandevs, webdev
Published: 2024-04-17 04:31:57

Olá! Aqui é meu primeiro post e apenas vou dissecar um pouco sobre o protocolo HTTP. 

> Requisitos 
- Conhecimento básico em terminal
- Noções em Node.js

# Conhecendo o HTTP

Com uma página aberta em um navegador, ao inspecionar um elemento notamos que caímos no famoso **devtools**. Na parte superior podemos selecionar a aba `Network` ou `Rede` onde encontraremos uma área em branco onde serão exibidos diversos logs com informações e mensagens do HTTP. Ao filtrar somente por requisições `FETCH/XHR`, teremos então somente os endpoint chamados para a api, sem a presença de arquivos como html, css, js, entre outros.

![devtools do navegador indicando a aba de network](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hl87z7e9ogor2afiabkp.png)


Ao realizar o login, notamos que na mesma listagem aparece o endpoint, informando o nome pra onde chamou na API.

> No caso aqui é uma API REST.


![devtools do navegador indicando a aba de network](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a2k6c6m0vueyoyhlwdte.png)


Ao clicar notamos diversas informações.

Na aba de **HEADERS** temos alguns itens que iremos abordar num futuro que são:

- Request URL
- Request Method
- Status Code


![devtools indicando os Headers do endpoint selecionado](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m7j0flz5rkc53ejnk0tq.png)

Existem outras, mas essas são geralmente as mais observadas.

Na aba de **PAYLOAD** temos um JSON que corresponde exatamente as informações preenchidas no frontend pelo usuário


![devtools indicando os Payload do endpoint selecionado](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l99cf998o18m4fahukb6.png)

Com isso, observamos o HTTP sendo usado no frontend.

Para identificar o HTTP trabalhando no backend, basta ir ao terminal local que irá aparecer um log como:

```
POST /public/login 200 1.474ms - 347
```

Note que o **200** apareceu aqui novamente, além de outras informações como o tempo total da requisição. O importante é o começo `POST /public/login`.

Esta informação veio do frontend. O numero 200 foi gerado pelo backend. Isso evidencia que o HTTP é sempre uma interação entre duas entidades, o cliente e o servidor.

Então, aqui vimos brevemente como o HTTP que corresponde a sigla **Hypertext Transfer Protocol**, ou seja, **Protocolo de Transferência de Hipertexto**, é usado para transferir dados na web.

É obrigatório que para o uso do HTTP, tenha duas entidades: um cliente e um servidor.

## Arquitetura do HTTP

Alguns parâmetros do HTTP são perceptíveis no navegador, mas como ocorre essa comunicação? A resposta está na camada de aplicação da arquitetura da internet.

Essa camada é composta pelo browser, então toda vez que estamos utilizando aplicativos ou navegadores, estamos utilizando esta camada.

Existem regras para que aconteça essa comunicação. Se o cliente mandar uma mensagem e o servidor não responder, não funciona.

## Regras do protocolo HTTP


- A comunicação sempre envolve duas entidades: um cliente e um servidor.

- A conversa é iniciada pelo cliente. O servidor nunca inicia a comunicação enviando informações ao cliente sem ser solicitado.

- Depois que o cliente envia uma mensagem, o servidor responde com as informações solicitadas.

O HTTP opera sobre o **TCP (Transmission Control Protocol)**, que é um protocolo da camada de transporte essencial para garantir a entrega bem-sucedida das mensagens HTTP ao destinatário.

Basicamente todo dispositivo que se conecta à internet possivelmente utiliza o protocolo HTTP (existem exceções).

## Conclusão

Em resumo, o HTTP é um protocolo essencial que opera na camada de aplicação da arquitetura da internet. Ele facilita a comunicação entre o cliente (geralmente um navegador web) e o servidor, permitindo a troca de informações na forma de documentos HTML, imagens, arquivos de vídeo, entre outros. O HTTP é um protocolo sem estado, tratando cada solicitação de forma independente. Este post explorou como o HTTP é usado tanto no frontend quanto no backend, e discutiu algumas das regras fundamentais que governam a comunicação HTTP. Embora este post tenha fornecido uma visão geral do HTTP, há muito mais a aprender sobre este protocolo crucial e como ele suporta a comunicação na web.

--

Para manter este post conciso e útil, vou encerrar aqui nossa exploração do Protocolo HTTP. No entanto, há muito mais a discutir sobre esse tema fascinante. Nos próximos posts, pretendo abordar questões como alternativas quando o HTTP pode não ser a melhor opção, a distinção entre URL, URI e DNS, e técnicas para depurar métodos HTTP de forma eficaz.

Fique ligado para as próximas atualizações, enquanto continuamos a desvendar os mistérios da comunicação na web juntos.


Até breve! Se você gostou deste post, por favor, deixe um like.