API REST simples em Flask para simular um serviço de autenticação.
Ideal para desenvolvimento e testes offline.
- Mock de autenticação (POST /api/autenticar/json)
- Armazena usuários mock em JSON
- Persistência com volume externo
- Rotas para gerenciar dados mock
- Health check simples
fake_api/
├── .env
├── .env.example
├── .gitignore
├── Dockerfile
├── LICENSE
├── Readme.md
├── app
│ ├── static
│ │ └── images
│ │ └── favicon.png
│ └── main.py
├── data
│ ├── dados_mock.json
│ └── dados_mock_exemplo.json
├── config.py
├── deploy.sh
├── fake_api.md
└── requirements.txt
✅ Nota: Antes de rodar o aplicativo ou buildar a imagem, certifique-se de criar e configurar o arquivo .env com as credenciais da API. Consulte o arquivo .env.example para ver como preencher o formato corretamente.
Autentica um usuário mock.
-
🔐 Requer autenticação HTTP Basic (veja
.envpara usuário e senha) -
📥 Body:
application/x-www-form-urlencodedlogin: ID do usuáriosenha: Senha do usuário
-
📤 Respostas possíveis:
- ✅
200 OK: Retorna os dados simulados do usuário - ❌
401 Unauthorized: Credenciais da API incorretas (Basic Auth inválido) - ❌
404 Not Found: Login ou senha inválidos (usuário não encontrado)
- ✅
💡 Exemplo via curl:
(usando usuário/senha definidos no .env)
curl -X POST http://localhost:5001/autenticar/json \
-u appuser:apppassword \
-d "login=1" -d "senha=admin"Lista todos os usuários mock salvos.
Adiciona um usuário temporariamente à lista de usuários.
Os dados persistem apenas enquanto o app estiver rodando e se o volume estiver montado.
Formato esperado:
{
"login": "2",
"senha": "teste",
"usuario": {
"pessoa": {
"codigo": 2,
"nome": "João",
"email": "joao@example.com"
},
"codigo": 2,
"tipo": "FUNCIONARIO",
"situacao": "ATIVO",
"grupo": "DOCENTE"
}
}Retorna status do serviço:
{
"status": "ok",
"service": "fake_api",
"version": "1.3.0"
}Recarega os dados da aplicação. Requer a presença de um token de autenticação via query string.
token(obrigatório, na query string): chave de segurança para autorização da recarga.
- ❌
403 Forbidden: caso o token seja inválido ou ausente. - ✅
200 OK: se a recarga for realizada com sucesso.
POST /reload?token=abc123Retorna o favicon usado pelo navegador
- Python 3.12 (ou similar) OU Podman/Docker
- Flask (ver
requirements.txt)
1️⃣ Instale dependências:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt2️⃣ Crie a pasta de dados (opcional):
mkdir -p data
cp data/dados_mock_exemplo.json data/dados_mock.json3️⃣ Rode o servidor:
python app/main.pypodman build -t fake_api .Crie a pasta de dados no host e copie o exemplo:
mkdir -p ~/fake_api_data
cp data/dados_mock_exemplo.json ~/fake_api_data/dados_mock.jsonPara rodar e mapear porta + volume:
podman run --rm -p 5001:5001 -v ~/fake_api_data:/app/data fake_api⭐️ Ou em segundo plano:
podman run -d --rm -p 5001:5001 -v ~/fake_api_data:/app/data fake_apipodman logs <container_id>podman stop <container_id>⭐️ Qualquer dado adicionado via POST /mock_data será salvo em:
~/fake_api_data/dados_mock.json
✔️ Sobrevive mesmo após reiniciar o container!
✅ Se rodar sem montar o volume, todos os dados serão perdidos ao parar o container.
MIT License