Entendendo o HTTP
Primeiro, vamos entender o formato da mensagem HTTP. Basicamente, existem 2 tipos de mensagens neste protocolo:
Request, que representa a mensagem enviada do cliente para o servidor
Response, que representa a mensagem, ou resposta, enviada do servidor para o cliente
Request
A seguir descrevemos o formato padrão de uma mensagem HTTP Request:
a primeira linha, conhecida como headline, define o método ou verbo, em seguida o caminho para o recurso, e por último a versão do protocolo.
(opcional) a segunda linha define o cabeçalho, ou header. Os headers no HTTP são opcionais e representam metadados que podem ser lidos tanto pelo server quanto pelo client.
a terceira linha é uma linha em branco, mandatória para separação entre headers e payload
(opcional) a última linha refere-se ao payload, ou body, que representa o conteúdo principal a ser enviado na mensagem HTTP. O body é opcional.
Response
E agora demonstramos o formato do HTTP Response:
a primeira linha, conhecida como headline, define o versão, seguida do status code, que representa um código de sucesso ou falha.
(opcional) a segunda linha define o cabeçalho, ou header. Os headers no HTTP são opcionais e representam metadados que podem ser lidos tanto pelo server quanto pelo client.
a terceira linha é uma linha em branco, mandatória para separação entre headers e payload
(opcional) a última linha refere-se ao payload, ou body, que representa o conteúdo principal a ser enviado na mensagem HTTP. O body é opcional.
Vamos agora entender mais alguns conceitos do HTTP.
Versão
A versão do protocolo vai depender em como o server e client suportam, mas a primeira versão de 1989 era HTTP/0.9.
Anos mais tarde, o protocolo foi sofrendo melhorias, subindo para a versão 1.0.
Em 1997 foi lançada a versão HTTP/1.1 com diversas melhorias, o que predominou em todos os web browsers até 2015.
A versão HTTP/2 é publicada em 2015 com suporte a uma web mais semântica, e hoje é utilizada em 45% dos websites e suportada por 96% dos web browsers.
Então em 2022 é publicada a versão HTTP/3, que traz notórias mudanças, dentre elas a utilização de outro protocolo de transporte, o QUIC, lançado em 2012 e que utiliza UDP com uma implementação de conexão leve e tem menos latência que TCP. HTTP/3 é utilizado por 24% dos websites.
Em testes de performance, HTTP/3 se mostrou mais rápido que HTTP/2 e até 3x mais rápido que HTTP/1.1.
Para fins didáticos neste guia, vamos utilizar HTTP/1.1, pois ainda assim é utilizado por mais de 80% dos websites.
Status code
Status code é um indicativo de sucesso, falha no servidor ou até mesmo falha na mensagem do cliente.
Operações de sucesso costumam ficar na famÃlia 200, ou 2xx de status codes.
Se o servidor não conseguir interpretar a mensagem do cliente por algum motivo ou validação de dados, é caracterizado um erro de cliente, ou client error. Client errors costumam ficar na famÃlia 400, ou 4xx de status codes.
Se o servidor não conseguir processar a resposta por algum erro interno, seja o erro esperado ou não, é caracterizado um server error. Server errors costumam ficar na famÃlia 500, ou 5xx de status codes.
Há também outra famÃlia de status codes, que é a 300 ou 3xx, que indica que o aquele caminho especÃfico não tem o recurso mas que o recurso foi modificado/redirecionado para outro caminho no servidor.
Body
O corpo da mensagem é o conteúdo principal. No HTTP, pode ser desde um simples texto, a um hypertexto, um arquivo PDF, uma imagem, JSON, XML etc, qualquer formato de conteúdo, desde que especificado nos metadados (headers) da mensagem.
Ou seja, embora foi concebido para, o conteúdo do HTTP não precisa ser necessariamente hypertexto (HTML).
HTTP headers
O HTTP é um protocolo bastante versátil, e não à toa, se tornou o padrão para a Web. Esta versatilidade não seria possÃvel sem o uso de metadados, ou headers, para que servidor e cliente possam trocar informação necessária sobre tipo do conteúdo, tamanho, regras de segurança, cache de dados entre outras informações extremamente relevantes.
Last updated