APIs e REST
REST é a arquitetura que define como aplicativos se comunicam pela web usando os métodos e semântica do HTTP.
Uma interface para programas
Assim como um site tem uma interface para humanos (botões, formulários), uma API tem uma interface para programas. REST define que cada recurso (usuário, produto, pedido) tem uma URL própria, e os métodos HTTP (GET, POST, PUT, DELETE) expressam a intenção — ler, criar, atualizar, remover.
O que torna REST popular é a simplicidade: usa o HTTP que já existe, retorna JSON que todo browser entende,
e não precisa de protocolo especial. Um curl na linha de comando já é suficiente para testar.
Explore uma API REST
Selecione um endpoint, veja o método e o path, e clique para enviar. A API mock responde com JSON real, status codes corretos e headers.
Convenções REST
# Convenções REST para um recurso "usuários" GET /api/usuarios → lista todos (200 OK) GET /api/usuarios/42 → busca por ID (200 OK ou 404) POST /api/usuarios → cria novo (201 Created) PUT /api/usuarios/42 → substitui completamente (200 OK) PATCH /api/usuarios/42 → atualiza parcialmente (200 OK) DELETE /api/usuarios/42 → remove (204 No Content) # Aninhamento — recursos relacionados GET /api/usuarios/42/posts → posts do usuário 42 POST /api/usuarios/42/posts → cria post para o usuário 42
Estrutura de uma resposta bem projetada
# Resposta típica de uma API REST HTTP/1.1 200 OK Content-Type: application/json { "data": { "id": 42, "nome": "Ana Silva", "email": "[email protected]", "criadoEm": "2025-01-15T10:30:00Z" }, "meta": { "requestId": "a3f8c2d1" } }
Crie sua primeira API REST
Mini projeto: implemente uma API de lista de tarefas (TODO) com 5 endpoints: listar, buscar por ID, criar, atualizar e deletar. Use um array em memória como banco de dados. Pode usar Express.js, FastAPI, ou qualquer framework.
Projeto principal: adicione paginação (?page=1&limit=10), filtro (?ativo=true), ordenação (?sort=nome&order=asc) e um header de autenticação (Authorization: Bearer token). Retorne erros com mensagens descritivas.
Desafio extra: escreva testes de integração para todos os endpoints usando pytest/jest: teste casos de sucesso, 404, dados inválidos (400) e autenticação falha (401).
Teste sua intuição
Onde você encontra isso
GitHub API
A API do GitHub é REST pura. GET /repos/usuário/repo/issues lista as issues. Você pode automatizar workflows inteiros com ela.
OAuth 2.0
"Login com Google" é uma API REST. Você redireciona para o Google, ele retorna um token, você usa o token em requests subsequentes.
Webhooks
REST invertido: em vez de você perguntar ao servidor se algo mudou (polling), o servidor te avisa via POST quando algo acontece.
GraphQL
Uma alternativa ao REST: uma única URL, o cliente especifica exatamente os campos que quer. Evita over-fetching mas adiciona complexidade.