O que é o protocolo HTTP?
Tags: redesdecomputadores, http, internet, portugues
Published: 2020-09-23 17:16:44

---
title: O que é o protocolo HTTP?
published: true
description: Tirando a dúvida do que é protocolo HTTP
tags: redesdecomputadores, http, internet, portugues
cover_image: https://images.unsplash.com/photo-1501250987900-211872d97eaa?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=750&q=80
---
O protocolo HTTP significa __hyper text transfer protocol__, serve para __transmitir [hypermedias](https://en.wikipedia.org/wiki/Hypermedia)__ como texto, vídeo, gráficos, etc, e __atua na camada de aplicação de uma rede de computadores__, que é a última camada de uma rede de computadores padrão OSI, onde nós interagimos no browser.

Segundo o [MDN](https://developer.mozilla.org/pt-BR/docs/Web/HTTP):

> Foi desenvolvido para comunicação entre [navegadores web](https://pt.wikipedia.org/wiki/Navegador_web) e [servidores web](https://pt.wikipedia.org/wiki/Servidor_web), porém pode ser utilizado para outros propósitos também. 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 __servidor web__ é um software ou um computador que fornece os recursos requisitados por HTTP por outro computador. Quando você digita um site no navegador está utilizando o protocolo para fazer requisições. Na terminologia, um _cliente_ faz um _request_ e um _servidor_ envia um _response_. 

Numa requisição/resposta podemos adicionar __http headers__, que permitem que o cliente e o servidor troquem informações adicionais. Nos headers podemos verificar qual foi o __http request method__ utilizado. Alguns exemplos de methods:

* POST: requisição para submeter
* GET:  requisição para obter
* PUT: requisição para substituir completamente
* DELETE: requisição para deleter

Faça o seguinte teste: abra uma nova página do Google e dê um F12 para abrir a aba do Chrome DevTools (supondo que esteja no Chrome). A DevTools é uma ferramenta para que desenvolvedores web possam investigar, debugar, analisar, etc, diversos pontos sobre o browser e os recursos trocados. Você verá algo assim:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/h7qxg1xsoi1joco6nejz.png)

Agora, na DevTools, clique na aba _Network_ e dê um F5:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/fqnc5iynwvxief2q00ph.png)

Na parte de _Name_ podemos ver vários recursos elencados que foram trazidos para nós por um servidor web, através do protocolo HTTP, quando demos um _refresh_ para acessar a página do Google. 

A exemplo, cliquei em um recurso na listagem e foram mostradas algumas informações sobre a requisição:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ckrbx880o5yfcvoaib02.png)

Cliquei em _Preview_ para ver o recurso. Nesse caso, uma imagem:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/optw8nl3kamtisqj5ew2.png)

Repare minuciosamente nas informações do header: 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/yyehegec0fy26t7rr6iy.png)

Temos a __request URL__, que é o site que nós digitamos, o __request method__, nesse caso o GET, e temos também o __status code__. Alguns status code mais conhecidos:

* 200: OK
* 400: Bad request
* 404: Not found
* 500: Internal server error

O status code indica se a requisição HTTP foi completada com sucesso ou não, se houve falha, se foi encontrado, se houve erro, etc. 

Recapitulando o protocolo:

1. Atua na camada de aplicação de uma rede de computadores
2. Serve para transmitir recursos de hypermedia
3. Comunica um web browser com um servidor web
4. Segue a lógica de cliente-servidor

Vale a pena ler a documentação do Mozilla para mais informações. 

---
_Fontes_:
[Rock Content](https://rockcontent.com/blog/http/)
[Wikipedia](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol)
[Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Web/HTTP)

---
_Esse texto não tem intenção de esgotar o tema. Acrescente nos comentários, e também aponte erros quando os identificar._