O que é HTTP?

Prévia grátis 6 min de leitura

A linguagem da web

Toda vez que você visita um site, envia um formulário ou carrega uma imagem, seu navegador está tendo uma conversa com um servidor. Essa conversa segue um conjunto estrito de regras chamado HTTP: HyperText Transfer Protocol (Protocolo de Transferência de Hipertexto).

HTTP é a base de toda troca de dados na web. Sem ele, navegadores não saberiam como pedir páginas, e servidores não saberiam como responder.


Uma analogia simples

Pense no HTTP como pedir comida em um restaurante:

Voce (cliente/navegador):  "Eu gostaria da homepage, por favor."  → Requisicao HTTP
Garcom (a internet):        leva seu pedido para a cozinha
Cozinha (servidor):          prepara o prato
Garcom:                      traz o prato de volta
Voce:                        recebe a comida                      ← Resposta HTTP

HTTP é um protocolo de requisição-resposta. O cliente sempre pergunta primeiro, e o servidor sempre responde. O servidor nunca envia dados sem ser solicitado.


HTTP em ação

Quando você digita https://example.com no navegador, aqui está o que acontece no nível HTTP:

1. Navegador cria uma REQUISICAO HTTP:
   GET / HTTP/1.1
   Host: example.com

2. Servidor processa a requisicao e envia uma RESPOSTA HTTP:
   HTTP/1.1 200 OK
   Content-Type: text/html

   <html><body>Hello, World!</body></html>

3. Navegador le a resposta e renderiza o HTML

E isso. Toda interação web (carregar páginas, enviar formulários, buscar dados de API) segue esse mesmo padrão.


Características chave do HTTP

1. Stateless (sem estado)

HTTP é stateless: cada requisição é completamente independente. O servidor não lembra de requisições anteriores.

Requisicao 1: GET /products      → Servidor responde com lista de produtos
Requisicao 2: GET /products/42   → Servidor NAO tem memoria da Requisicao 1

Isso significa que o servidor trata cada requisição como se fosse de um visitante novo. Para manter estado (como "este usuário está logado"), apps web usam cookies e sessões: mas o HTTP em si não rastreia nada.

Por que stateless? Torna servidores mais simples e escalaveis. Qualquer servidor em um cluster pode lidar com qualquer requisição sem precisar saber o que aconteceu antes.

2. Baseado em texto

Mensagens HTTP/1.1 são texto legível por humanos, então você pode ler HTTP bruto (o HTTP/2 e o HTTP/3 mandam as mesmas mensagens em frames binários, e as ferramentas as decodificam para você):

GET /about HTTP/1.1
Host: myapp.com
Accept: text/html
User-Agent: Mozilla/5.0

Isso torna HTTP fácil de debugar: você pode inspecionar o que está sendo enviado e recebido.

3. Arquitetura cliente-servidor

HTTP separa claramente os papéis:

sequenceDiagram
  participant C as Cliente (navegador)
  participant S as Servidor (Rails)
  C->>S: requisição
  S->>C: resposta
  • Cliente inicia requisições (navegadores, apps móveis, curl, clientes API)
  • Servidor escuta e responde (Rails, Django, Express, etc.)

4. Roda sobre TCP

HTTP roda sobre TCP (Transmission Control Protocol), que você aprendeu no curso de Fundamentos da Internet. TCP garante que mensagens HTTP cheguem completas, em ordem e sem corrupção. (O HTTP/3 é a exceção: ele roda sobre QUIC, em UDP.)

Camada de Aplicacao:   HTTP (sua requisicao web)
Camada de Transporte:  TCP  (entrega confiavel)
Camada de Rede:        IP   (roteamento pela internet)

A anatomia de uma URL no HTTP

requisições HTTP miram um recurso específico identificado por uma URL:

https://myapp.com:443/courses/ruby-basics?page=2#overview
│       │          │   │                  │       │
schema  host      porta caminho          query   fragmento
Parte Propósito Exemplo
Schema Protocolo a usar http:// ou https://
Host Servidor para conectar myapp.com
Porta Porta do servidor (padrão: 80/443) :443
Caminho Qual recurso requisitar /courses/ruby-basics
Query Parâmetros adicionais ?page=2
Fragmento Âncora client-side (Não enviada ao servidor) #overview

Importante: O fragmento (#overview) nunca é enviado ao servidor. E usado apenas pelo navegador para rolar até uma seção da página.


Métodos HTTP (verbos): uma prévia

HTTP define vários métodos (também chamados verbos) que dizem ao servidor qual ação realizar:

Método Propósito Exemplo
GET Recuperar dados Ver uma página web
POST Criar dados Enviar um formulário
PUT Substituir dados inteiramente Atualizar um registro completo
PATCH Atualizar dados parcialmente Mudar um campo
DELETE Remover dados Deletar um registro

você vai estudar cada verbo em profundidade nos próximos cursos. Por agora, saiba que GET e POST representam a grande maioria do tráfego web.


Códigos de status HTTP: uma prévia

Toda resposta HTTP inclui um código de status: um número de três dígitos indicando o resultado:

Faixa Significado Exemplo
1xx Informacional 100 Continue
2xx Sucesso 200 OK
3xx Redirecionamento 301 Moved Permanently
4xx Erro do Cliente 404 Not Found
5xx Erro do Servidor 500 Internal Server Error

você vai estudar códigos de status específicos em detalhes depois. Por ora, guarde isto: o primeiro dígito diz a categoria da resposta.


HTTP e Rails

Rails é fundamentalmente um framework HTTP. Quando você cria uma aplicação Rails, está construindo um programa que:

  1. Recebe requisições HTTP (via servidor web como Puma)
  2. Roteia para a action correta do controller
  3. Processa a requisição (consulta banco, executa lógica de negócio)
  4. Retorna uma resposta HTTP (HTML, JSON, redirect, etc.)
Navegador: GET /courses HTTP/1.1
           Host: myapp.com

           ↓

Rails:     routes.rb → CoursesController#index
           → consulta banco de dados
           → renderiza view

           ↓

Navegador: HTTP/1.1 200 OK
           Content-Type: text/html
           <html>...lista de cursos...</html>

Todo conceito Rails (rotas, controllers, views, redirects, envio de formulários) mapeia diretamente para conceitos HTTP. Entender HTTP é entender como Rails pensa.


Resumo

Conceito Ponto Chave
HTTP HyperText Transfer Protocol: a linguagem que navegadores e servidores falam
Requisição-Resposta Cliente pergunta, servidor responde: sempre nessa ordem
Stateless Cada requisição é independente: servidor não lembra das anteriores
Baseado em Texto Mensagens HTTP são legíveis por humanos: fácil de debugar
Cliente-Servidor Separação clara: cliente inicia, servidor responde
Sobre TCP HTTP depende do TCP para entrega confiável e ordenada
Métodos GET, POST, PUT, PATCH, DELETE: dizem ao servidor o que fazer
Códigos de Status 2xx sucesso, 3xx redirect, 4xx erro cliente, 5xx erro servidor
Rails Um framework para receber requisições HTTP e retornar respostas HTTP
Aula 1 de 7 · grátis

Continue com a aula 2

A requisição HTTP

Divide a requisição em linha de requisição, cabeçalhos e corpo, incluindo corpos de formulário, JSON e multipart.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...