Sobre o básico de HTTP
Hoje vou esquecer os códigos e dar uma atenção a algo muito importante para todo desenvolvedor: compreender o protocolo HTTP.
Afinal, o que é HTTP?
HTTP é o protocolo sobre o qual roda requisições e respostas no mundo Web. É através dele que abrimos páginas nos browsers, interagimos com amigos em aplicativos, fazemos uma compra e escrevemos conversas num blog. Tecnicamente, é um protocolo da camada de aplicação no Modelo OSI por ser responsável por prover serviços para aplicações.
Como funciona ?
O HTTP funciona no modelo cliente-servidor, ou seja, requisição-resposta. O cliente (browser, como exemplo) envia uma requisição e o servidor a responde. HTTP é Stateless, ou seja, não guarda estado das requisições que recebe. Você pode ver as requisições pela aba “Network” quando pressiona F12 no seu browser pra depurar uma navegação a uma página web:

Quando um endereço é digitado e você pressiona “Enter” uma cadeia de requisições é feita pelo navegador para montar a página, uma a uma, buscando o html, os scripts js, os arquivos (gif, png, jpg…) e demais conteúdos.
Endereços
Para que um endereço seja válido deve seguir certos padrões. No caso de abrir a página do Google estamos digitando na barra de endereços do navegador uma URL, que tem o seguinte padrão:
protocolo://domínio:porta/caminho/recurso?query_string
- Protocolo é a forma de comunicação, nesse caso, http ou https;
- Domínio é o nome que você conhece como “google.com”, “globo.com”, “gmail.com”. Há um serviço prestado por servidores DNS para que esses nomes sejam traduzidos em endereços IPs, referenciando o servidor que hospeda aquele site.
- Porta lógica de comunicação com o computador por trás do domínio. É uma parte opcional já que geralmente se usa desde que os padrões sejam mantidos (HTTPS = 443/HTTP = 80).
- Caminho é um esquema de diretórios para chegar a um recurso, por exemplo “sistema.com.br/menu/gestao/acesso” onde “menu/gestao” são diretórios do sistema daquele servidor;
- Recurso é uma funcionalidade ou arquivo que será acessado;
- Query string são conjunto de parâmetros/argumentos usados para determinadas requisições, geralmente pesquisas, por exemplo:
“sistema/gestao/pesquisa_produtos?tipo=limpeza”;
Requisições
A partir do momento que um endereço seguindo o padrão acima é acessado, várias requisições HTTP são realizadas, e respostas são recebidas do servidor. Da mesma forma que com endereços as requisições também seguem padrões e tem informações importantes:

Uma requisição HTTP contém:
- Request line
- Header(s)
- CRLF
- Body
Somente request line é obrigatório. Em requisições do tipo GET o body não é necessários. Headers seguem o padrão chave: valor. O interessante é sempre verificar os métodos HTTP.
Métodos
Os métodos do HTTP vão descrever conceitualmente a operação que será realizada:
- GET: Obtenção de recurso;
- POST: Geralmente quando dados são submetidos a um servidor;
- DELETE: Exclusão de recurso;
Respostas das requisições
Códigos de resposta
Do lado servidor, requisições que chegam serão respondidas. O mesmo realiza a operação solicitada de acordo com o verbo (nome alternativo a requisição) e devolve uma resposta com um código de resposta. Tais códigos possuem um número que identifica um determinado status de resposta para aquela solicitação, que são:
- 200: OK
- 300: Redirecionamento: Quando um recurso está num outro diretório
- 400: Recurso não encontrado
- 500: Erro interno do servidor
Valeu !

Finalizei um curso na Alura a respeito do assunto e curti bastante a abordagem. Além de procurar explicar os conceitos de forma simples, a ementa é suficiente para o que o desenvolvedor precisa. Vai desde o que é HTTP a nova versão do protocolo e arquitetura REST.
