APIs REST são a espinha dorsal da internet moderna. Toda vez que você usa um app no celular, faz uma compra online ou envia uma mensagem, dezenas de APIs estão trabalhando nos bastidores. Saber criar APIs é uma das habilidades mais valorizadas no mercado de desenvolvimento — e também uma das que mais pagam.
Segundo o Postman State of APIs Report 2025, mais de 90% das aplicações web usam APIs REST para comunicação entre frontend e backend. No Brasil, devs com experiência em APIs REST e microserviços estão entre os mais bem pagos do setor.
O Que É Uma API REST?
API (Application Programming Interface) é um conjunto de regras que permite que dois sistemas conversem entre si. REST (Representational State Transfer) é um estilo arquitetural que define como essa conversa deve acontecer.
Uma API REST funciona sobre o protocolo HTTP — o mesmo que seu navegador usa. A diferença é que, em vez de retornar páginas HTML, ela retorna dados (geralmente em formato JSON).
Os 6 princípios REST:
- Client-Server — cliente e servidor são independentes
- Stateless — cada requisição contém toda informação necessária
- Cacheable — respostas podem ser cacheadas
- Uniform Interface — URLs e métodos padronizados
- Layered System — camadas intermediárias (proxy, CDN) são transparentes
- Code on Demand (opcional) — servidor pode enviar código executável
Métodos HTTP: O Vocabulário das APIs
| Método | Ação | Exemplo | Idempotente |
|---|---|---|---|
| GET | Ler/buscar dados | `GET /api/usuarios` | Sim |
| POST | Criar novo recurso | `POST /api/usuarios` | Não |
| PUT | Atualizar recurso completo | `PUT /api/usuarios/1` | Sim |
| PATCH | Atualizar parcialmente | `PATCH /api/usuarios/1` | Sim |
| DELETE | Remover recurso | `DELETE /api/usuarios/1` | Sim |
Códigos de Status HTTP:
| Código | Significado | Quando Usar |
|---|---|---|
| 200 | OK | Requisição bem-sucedida |
| 201 | Created | Recurso criado com sucesso |
| 204 | No Content | Sucesso sem corpo de resposta |
| 400 | Bad Request | Dados inválidos do cliente |
| 401 | Unauthorized | Não autenticado |
| 403 | Forbidden | Sem permissão |
| 404 | Not Found | Recurso não existe |
| 500 | Internal Server Error | Erro no servidor |
Boas Práticas de Design de API
Nomenclatura de endpoints:
- Use substantivos no plural: `/api/usuarios` (não `/api/getUsuarios`)
- Use kebab-case: `/api/pedidos-de-compra` (não `/api/pedidosDeCompra`)
- Aninhamento para relações: `/api/usuarios/1/pedidos` (pedidos do usuário 1)
- Query parameters para filtros: `/api/usuarios?cidade=sao-paulo&ativo=true`
Paginação:
Para listas grandes, sempre implemente paginação:
```
GET /api/usuarios?page=1&limit=20
Resposta:
{
"data": [...],
"total": 150,
"page": 1,
"limit": 20,
"totalPages": 8
}
```
Versionamento:
Versione sua API para não quebrar clientes existentes:
- URL: `/api/v1/usuarios` (mais comum)
- Header: `Accept: application/vnd.api+json; version=1`
Criando Uma API REST Com Node.js (Express)
Express é o framework mais popular para APIs em Node.js:
```
const express = require('express');
const app = express();
app.use(express.json());
let usuarios = [];
// GET - Listar todos
app.get('/api/usuarios', (req, res) => {
res.json(usuarios);
});
// POST - Criar novo
app.post('/api/usuarios', (req, res) => {
const usuario = { id: Date.now(), ...req.body };
usuarios.push(usuario);
res.status(201).json(usuario);
});
// GET - Buscar por ID
app.get('/api/usuarios/:id', (req, res) => {
const usuario = usuarios.find(u => u.id == req.params.id);
if (!usuario) return res.status(404).json({ error: 'Não encontrado' });
res.json(usuario);
});
app.listen(3000, () => console.log('API rodando na porta 3000'));
```
Para projetos maiores, considere usar Next.js com API Routes — veja nosso comparativo React vs Next.js.
Criando Uma API REST Com Python (FastAPI)
FastAPI é o framework mais moderno e performático para APIs Python:
```
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class Usuario(BaseModel):
nome: str
email: str
idade: int
usuarios = {}
@app.get("/api/usuarios")
def listar_usuarios():
return list(usuarios.values())
@app.post("/api/usuarios", status_code=201)
def criar_usuario(usuario: Usuario):
id = len(usuarios) + 1
usuarios[id] = {**usuario.dict(), "id": id}
return usuarios[id]
@app.get("/api/usuarios/{id}")
def buscar_usuario(id: int):
if id not in usuarios:
raise HTTPException(status_code=404, detail="Não encontrado")
return usuarios[id]
```
Se está indeciso entre as duas linguagens, confira JavaScript ou Python: Qual Aprender?.
Autenticação e Segurança
Toda API em produção precisa de autenticação:
| Método | Complexidade | Melhor Para |
|---|---|---|
| API Key | Fácil | Integrações simples, APIs internas |
| JWT (JSON Web Token) | Média | Aplicações web, SPAs, mobile |
| OAuth 2.0 | Alta | Login social, APIs públicas |
| Session-based | Média | Aplicações web tradicionais |
Checklist de segurança para APIs:
- Sempre use HTTPS em produção
- Valide todos os inputs do cliente (nunca confie no frontend)
- Implemente rate limiting (limitar requisições por IP/usuário)
- Use CORS restritivo (apenas domínios autorizados)
- Nunca exponha dados sensíveis em respostas (senhas, tokens internos)
- Sanitize inputs contra SQL Injection e XSS
Ferramentas Para Desenvolvimento de APIs
| Ferramenta | Função | Custo |
|---|---|---|
| Postman | Testar e documentar APIs | Grátis (básico) |
| Insomnia | Alternativa ao Postman, mais leve | Grátis |
| Swagger/OpenAPI | Documentação interativa automática | Grátis |
| Thunder Client | Testar APIs dentro do VS Code | Grátis |
| HTTPie | Cliente HTTP de linha de comando | Grátis |
Conclusão
Criar APIs REST é uma habilidade fundamental para qualquer desenvolvedor web. Comece com projetos simples (CRUD de tarefas, cadastro de usuários) e evolua para sistemas mais complexos com autenticação, paginação e integrações.
Dominar APIs abre portas para backend, fullstack e até freelancing — a demanda por devs que sabem construir APIs robustas é altíssima.
Perguntas Frequentes
Qual a diferença entre API REST e API GraphQL?
REST usa endpoints fixos com métodos HTTP (GET /usuarios, POST /pedidos), enquanto GraphQL usa um único endpoint onde o cliente especifica exatamente quais dados quer. REST é mais simples e padronizado; GraphQL é mais flexível mas mais complexo. Para a maioria dos projetos, REST é suficiente.
Preciso de banco de dados para criar uma API?
Para aprender, não — você pode usar arrays em memória como nos exemplos acima. Para produção, sim. As opções mais comuns são PostgreSQL (relacional) e MongoDB (NoSQL). Para começar, Supabase oferece PostgreSQL grátis com interface visual.
Qual framework é melhor para APIs: Express, FastAPI ou Django?
Depende da linguagem. Express (Node.js) é o mais popular e flexível. FastAPI (Python) é o mais moderno, com tipagem automática e documentação gerada. Django REST Framework (Python) é robusto para projetos grandes. Para 2026, FastAPI é a escolha mais moderna.
Como testar minha API sem frontend?
Use o Postman (interface gráfica) ou curl (linha de comando). Ambos permitem enviar requisições HTTP para sua API e inspecionar as respostas. O Postman também permite criar coleções de testes automatizados.

