REST sem mistério: a API é só um garçom

Desmistifique REST sem mistério: entenda recursos, métodos HTTP, status codes, stateless e tokens com exemplos práticos usando curl e Postman.

Avatar de Gabriel
Gabriel
REST sem mistério: a API é só um garçom

Você já usou uma API hoje e provavelmente nem percebeu. Abriu o app do banco, conferiu a previsão do tempo, deu scroll no feed — tudo isso é um monte de aplicativo conversando com servidor via API. E na esmagadora maioria das vezes, essa conversa segue um estilo chamado REST. Bora abrir a caixa preta.

Ilustrar a metáfora central do artigo — a API como intermediária entre cliente e servidor — numa imagem de abertura limpa e convidativa para iniciantes.
Ilustrar a metáfora central do artigo — a API como intermediária entre cliente e servidor — numa imagem de abertura limpa e convidativa para iniciantes.

API é só um garçom

Esquece a sigla (Application Programming Interface) por um segundo. Pensa num restaurante. Você não vai até a cozinha fritar seu próprio ovo — você fala com o garçom, ele leva o pedido, volta com o prato. A API é o garçom: um intermediário com um cardápio fixo de coisas que dá pra pedir.

O seu app (o cliente) pede algo. O servidor prepara e devolve. Você nunca toca no banco de dados direto, nunca vê a cozinha. Só conhece o cardápio — os endereços que dá pra chamar e o que cada um faz. Essa separação é o que deixa tudo sustentável: o time do backend pode reformar a cozinha inteira e, enquanto o cardápio continuar o mesmo, seu app nem fica sabendo.

HTTP: o idioma da conversa

Toda essa troca acontece por HTTP, o mesmo protocolo do seu navegador. E cada pedido carrega um método, que é o verbo da ação:

  • GET — buscar dados. "Me mostra os usuários." Não muda nada.
  • POST — criar. "Cadastra esse usuário novo."
  • PUT — atualizar. "Troca os dados desse usuário."
  • DELETE — apagar. "Remove esse usuário."

A sacada é que o método deixa a intenção explícita. GET /usuarios e DELETE /usuarios/42 batem na mesma ideia de recurso, mas fazem coisas opostas — e qualquer dev que ler isso entende na hora, sem precisar de documentação. Além do método e da URL, o pedido leva headers (informações extras, tipo quem você é e que formato você aceita) e, em POST e PUT, um corpo com os dados que você está mandando.

Status codes: o servidor respondendo na lata

Pra cada pedido, o servidor devolve um número de três dígitos dizendo como foi. Você não precisa decorar todos, só o padrão das faixas:

  • 2xx — deu certo. 200 OK (aqui está), 201 Created (criei o que você pediu).
  • 4xx — o erro foi seu. 400 Bad Request (você mandou algo torto), 401 Unauthorized (cadê o login?), 403 Forbidden (logado, mas sem permissão), 404 Not Found (isso não existe).
  • 5xx — o erro foi do servidor. 500 Internal Server Error (a cozinha pegou fogo, não foi culpa sua).

Só de ler o código você já sabe pra que lado olhar. Levou 401? Confere o token. Levou 500? Relaxa, o problema é do outro lado — e do time do backend.

Recursos e JSON: o cardápio e o prato

Em REST, tudo gira em torno de recursos — os substantivos do seu sistema: usuários, pedidos, produtos. Cada recurso tem uma URL, e a URL é uma trilha lógica: /usuarios é a lista toda, /usuarios/42 é o usuário de id 42, /usuarios/42/pedidos são os pedidos dele. Repara que são substantivos, nunca verbos — quem faz o papel de verbo é o método HTTP.

E o formato em que esses dados viajam quase sempre é JSON. É texto puro, legível por humano e por máquina:

{
  "id": 42,
  "nome": "Ana",
  "ativo": true,
  "tags": ["admin", "beta"]
}

Chaves e valores, listas, números, booleanos. É basicamente um objeto do seu código serializado em texto pra atravessar a internet e ser remontado do outro lado.

Stateless e tokens: o servidor tem amnésia

Aqui mora a pegadinha que confunde todo mundo no começo: a API REST é stateless. Ou seja, o servidor não lembra de você entre um pedido e outro. Cada requisição chega do zero, como se fosse a primeira vez. Não existe "mas eu acabei de fazer login no request anterior" — pra ele, request anterior nunca existiu.

Então como o servidor sabe quem é você? Você fala de novo, toda vez. Depois de logar, você recebe um token — uma string longa que funciona como um crachá. Aí, em todo pedido seguinte, você anexa esse token num header:

Authorization: Bearer eyJhbGciOiJIUzI1Ni... 

O servidor lê o crachá, confere se é válido e libera (ou barra com um 401). É isso que torna a API escalável: qualquer servidor da fazenda consegue te atender, porque tudo que ele precisa pra saber quem você é vem junto no próprio pedido.

Mão na massa: curl e Postman

Teoria chega. A melhor forma de entender uma API é cutucar ela. Duas ferramentas resolvem sua vida.

O curl já vem no terminal e é direto ao ponto:

curl -X GET https://api.exemplo.com/usuarios/42 \
  -H "Authorization: Bearer SEU_TOKEN"

Um POST mandando JSON não é muito mais difícil:

curl -X POST https://api.exemplo.com/usuarios \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"nome": "Ana", "ativo": true}'

O -X escolhe o método, cada -H é um header, o -d é o corpo. Repara que tá tudo ali: método, URL, token no header, JSON no corpo. É a conversa inteira numa linha.

Já o Postman é a versão com interface gráfica: você preenche URL, escolhe o método num dropdown, monta headers e corpo em campos separados, aperta Send e vê a resposta formatada com o status code piscando na sua cara. Pra explorar uma API nova ou debugar, é imbatível.

Pronto. Agora quando você ler "faz um GET nesse endpoint e passa o token no header", não é mais grego. É só o garçom, o pedido e o crachá. O resto é praticar: pega qualquer API pública, abre o Postman e sai cutucando.

Gostou do artigo?

Compartilhe com seus amigos e ajude a espalhar conhecimento!