API REST mockada completa com endpoints para gerenciamento de pessoas e endereços, incluindo autenticação, simulação de erros e interface web similar ao Postman para testes.
- Autenticação JWT com Bearer Token
- CRUD completo para Pessoas e Endereços
- 30+ registros mockados para testes
- Simulação de erros (404, 500, 401)
- Query parameters e filtros
- Headers customizados
- Paginação automática
- CORS habilitado
- Design moderno inspirado no Postman
- Editor JSON com syntax highlighting
- Visualizador de resposta com tabs
- Gerenciamento de headers e parâmetros
- Autenticação integrada
- Histórico de requisições
- Responsivo para desktop e mobile
- Backend: Python 3.11, Flask, SQLAlchemy, SQLite
- Frontend: HTML5, CSS3, JavaScript ES6, Bootstrap 5
- Autenticação: JWT (JSON Web Tokens)
- Banco: SQLite (em memória para testes)
Realiza login e retorna token JWT.
Body:
{
"username": "admin",
"password": "123456"
}
Response (200):
{
"message": "Login realizado com sucesso",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"expires_at": "2025-07-01T21:50:09.180860",
"user": {
"id": 1,
"username": "admin",
"email": "[email protected]",
"ativo": true
}
}
Invalida o token atual (requer autenticação).
Retorna informações do usuário logado (requer autenticação).
Lista pessoas com paginação e filtros.
Query Parameters:
page
(int): Página (padrão: 1)per_page
(int): Itens por página (padrão: 10, máx: 100)nome
(string): Filtro por nomeativo
(boolean): Filtro por status ativo
Headers necessários:
Authorization: Bearer <token>
Response (200):
{
"pagination": {
"page": 1,
"pages": 3,
"per_page": 10,
"total": 22,
"has_next": true,
"has_prev": false
},
"pessoas": [
{
"id": 1,
"nome": "Ana Silva",
"email": "[email protected]",
"telefone": "(11) 96808-2668",
"cpf": "863.249.580-32",
"data_nascimento": "1974-03-12",
"profissao": "Administrador",
"salario": 14635.35,
"ativo": true,
"created_at": "2025-06-30T21:40:17.750106",
"updated_at": "2025-06-30T21:40:17.750106",
"enderecos": []
}
]
}
Obtém uma pessoa específica.
Response (200): Objeto pessoa
Response (404): {"error": "Pessoa não encontrada"}
Cria uma nova pessoa.
Body:
{
"nome": "João Silva",
"email": "[email protected]",
"telefone": "(11) 99999-9999",
"cpf": "123.456.789-00",
"data_nascimento": "1990-01-01",
"profissao": "Desenvolvedor",
"salario": 5000.00,
"ativo": true
}
Atualiza uma pessoa existente.
Remove uma pessoa.
Retorna estatísticas das pessoas.
Lista endereços com paginação e filtros.
Query Parameters:
page
,per_page
: Paginaçãocidade
,estado
: Filtros por localizaçãotipo
: Filtro por tipo (residencial, comercial, etc.)
Obtém um endereço específico.
Cria um novo endereço.
Body:
{
"pessoa_id": 1,
"tipo": "residencial",
"logradouro": "Rua das Flores",
"numero": "123",
"complemento": "Apto 45",
"bairro": "Centro",
"cidade": "São Paulo",
"estado": "SP",
"cep": "01234-567",
"pais": "Brasil",
"principal": true,
"ativo": true
}
Atualiza um endereço existente.
Remove um endereço.
Lista endereços de uma pessoa específica.
Para acessar a documentação interativa da API (Swagger UI), inicie a aplicação e acesse a seguinte URL no seu navegador:
- docker build -t api-mockada .
- docker-compose up -d
- docker-compose logs api - Dar uma bizulhada nos logs.
- Username:
admin
- Password:
123456
Use a interface web ou ferramentas como curl/Postman:
# Login
curl -X POST http://localhost:5001/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "123456"}'
# Listar pessoas (com token)
curl -X GET "http://localhost:5001/api/pessoas?page=1&per_page=5" \
-H "Authorization: Bearer <seu_token>"
Authorization
: Bearer token para autenticaçãoContent-Type
: application/json para requisições POST/PUTAccept
: application/json para respostas- Headers customizados podem ser adicionados via interface
- Paginação:
page
,per_page
- Filtros:
nome
,ativo
,cidade
,estado
- Ordenação:
sort_by
,order
200 OK
: Sucesso201 Created
: Recurso criado400 Bad Request
: Dados inválidos401 Unauthorized
: Token inválido/ausente404 Not Found
: Recurso não encontrado500 Internal Server Error
: Erro do servidor (3-5% das requisições)
- 404: Acesse
/api/pessoas/999
(ID inexistente) - 401: Remova o token de Authorization
- 500: A API simula erros aleatórios em 3-5% das requisições
- 400: Envie dados inválidos no body
A interface web oferece:
- Organização por categorias (Autenticação, Pessoas, Endereços)
- Requests pré-configurados
- Badges coloridos por método HTTP
- Seletor de método HTTP
- Campo de URL editável
- Abas para Params, Authorization, Headers, Body
- Editor JSON com syntax highlighting
- Status code com cores
- Tempo de resposta
- Abas para Body e Headers
- JSON formatado automaticamente
- Auto-save do token JWT
- Histórico de requisições
- Atalhos de teclado (Ctrl+Enter para enviar)
- Design responsivo
A API contém:
- 30 pessoas com dados realistas
- 60+ endereços distribuídos entre as pessoas
- Relacionamentos pessoa-endereço
- Dados brasileiros (CPF, telefones, CEPs)
- Profissões variadas e salários
- Endereços de diferentes tipos e cidades
- JWT Tokens com expiração de 24 horas
- Middleware de autenticação em endpoints protegidos
- Validação de dados de entrada
- CORS configurado para desenvolvimento
- Rate limiting simulado
Interface inspirada no Postman com:
- Tema escuro moderno
- Gradientes e animações suaves
- Ícones FontAwesome
- Bootstrap 5 para responsividade
- Syntax highlighting com Prism.js
- Banco SQLite em memória (dados resetam a cada reinício)
- CORS habilitado para todas as origens
- Debug mode ativo para desenvolvimento
- Logs detalhados no console
- Estrutura modular com blueprints Flask
Desenvolvido para treinamento em APIs REST 🚀