Disciplina: Engenharia de Software - APIs e Microsserviços
Instituição: Universidade Presbiteriana Mackenzie
Aluno: Bruno
Data: Outubro de 2025
Este projeto implementa duas APIs RESTful completas ("Hello World" e CRUD de mensagens) utilizando dois frameworks Python populares:
- Flask - Framework web minimalista e flexível
- FastAPI - Framework moderno com validação automática e documentação interativa
- ✅ Implementar uma aplicação "Hello World" em Flask
- ✅ Transformar a aplicação Flask em uma RESTful API completa
- ✅ Servir a API Flask utilizando o PyCharm
- ✅ Testar os endpoints Flask utilizando o Postman
- ✅ Implementar uma aplicação "Hello World" em FastAPI
- ✅ Servir a API FastAPI utilizando o Uvicorn
- ✅ Testar os endpoints FastAPI utilizando o Postman
api-engsoft/
│
├── docs/ # 📚 Documentação
│ ├── POSTMAN_TESTING_GUIDE.md # Guia completo de testes
│ ├── QUICK_START.md # Guia rápido
│ ├── VSCODE_GUIDE.md # Guia VS Code
│ └── ESTRUTURA_PROJETO.md # Estrutura detalhada
│
├── postman/ # 🔧 Arquivos Postman
│ ├── Postman_Collection.json # Collection importável
│ └── *.postman_test_run.json # Resultados dos testes
│
├── screenshots/ # 📸 Capturas de tela
│ ├── FlaskAPIPostman.png # Testes Flask
│ └── FastAPIPostman.png # Testes FastAPI
│
├── flask_app.py # Aplicação Flask com API RESTful
├── fastapi_app.py # Aplicação FastAPI com API RESTful
├── requirements.txt # Dependências do projeto
├── RELATORIO.md # Relatório final
└── README.md # Este arquivo
- Python 3.8 ou superior
- VS Code ou PyCharm (ambas IDEs funcionam perfeitamente)
- Postman (para testes de API)
📌 Dica: Se estiver usando VS Code, consulte o arquivo docs/VSCODE_GUIDE.md para instruções específicas!
cd d:\Projetos\Mackenzie\api-engsoftpython -m venv venvAtivar o ambiente virtual:
- Windows (PowerShell):
.\venv\Scripts\Activate.ps1
- Windows (CMD):
venv\Scripts\activate.bat
pip install -r requirements.txt- Abra o arquivo
flask_app.pyno VS Code - Abra o terminal integrado (Ctrl+`)
- Execute:
python flask_app.py - Ou pressione F5 para debug
- A aplicação estará disponível em:
http://127.0.0.1:5000
- Abra o arquivo
flask_app.pyno PyCharm - Clique com o botão direito no arquivo
- Selecione "Run 'flask_app'"
- A aplicação estará disponível em:
http://127.0.0.1:5000
python flask_app.pyURLs Importantes:
- Endpoint principal:
http://127.0.0.1:5000/ - API de mensagens:
http://127.0.0.1:5000/api/messages
- Abra o terminal integrado (Ctrl+` no VS Code)
- Execute:
uvicorn fastapi_app:app --reload --host 0.0.0.0 --port 8000
Nota: O comando é o mesmo em qualquer IDE ou terminal!
URLs Importantes:
- Endpoint principal:
http://127.0.0.1:8000/ - API de mensagens:
http://127.0.0.1:8000/api/messages - Documentação Swagger UI:
http://127.0.0.1:8000/docs - Documentação ReDoc:
http://127.0.0.1:8000/redoc
| Método | Endpoint | Descrição |
|---|---|---|
| GET | / |
Hello World básico |
| GET | /api/messages |
Lista todas as mensagens |
| GET | /api/messages/{id} |
Obtém mensagem específica |
| POST | /api/messages |
Cria nova mensagem |
| PUT | /api/messages/{id} |
Atualiza mensagem existente |
| DELETE | /api/messages/{id} |
Deleta mensagem |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | / |
Hello World básico |
| GET | /api/messages |
Lista todas as mensagens |
| GET | /api/messages/{id} |
Obtém mensagem específica |
| POST | /api/messages |
Cria nova mensagem |
| PUT | /api/messages/{id} |
Atualiza mensagem existente |
| DELETE | /api/messages/{id} |
Deleta mensagem |
- Abra o Postman
- Clique em Import
- Selecione
postman/Postman_Collection.json - Execute os testes e compare com
postman/*.postman_test_run.json
Para instruções detalhadas, consulte: docs/POSTMAN_TESTING_GUIDE.md
O guia inclui:
- ✅ Configuração passo a passo para cada requisição
- ✅ Exemplos de corpo de requisição (Request Body)
- ✅ Respostas esperadas para cada teste
- ✅ Testes de casos de erro (404, 400, 422)
- ✅ Dicas de organização no Postman
- ✅ Troubleshooting de problemas comuns
- 📊 Resultados:
postman/API Engenharia...test_run.json - 📸 Screenshots:
screenshots/FlaskAPIPostman.pngeFastAPIPostman.png - ✅ 19/19 testes passaram com sucesso!
Flask:
POST http://127.0.0.1:5000/api/messages
Content-Type: application/json
{
"content": "Minha mensagem",
"author": "Bruno"
}FastAPI:
POST http://127.0.0.1:8000/api/messages
Content-Type: application/json
{
"content": "Minha mensagem",
"author": "Bruno"
}Flask:
GET http://127.0.0.1:5000/api/messagesFastAPI:
GET http://127.0.0.1:8000/api/messages| Característica | Flask | FastAPI |
|---|---|---|
| Velocidade | WSGI (mais lento) | ASGI (mais rápido) |
| Validação | Manual | Automática (Pydantic) |
| Documentação | Manual | Automática (Swagger/ReDoc) |
| Type Hints | Opcional | Recomendado |
| Async/Await | Limitado | Nativo |
| Curva de Aprendizado | Mais suave | Moderada |
| Casos de Uso | APIs simples, MVPs | APIs modernas, microserviços |
Solução: Instale as dependências:
pip install -r requirements.txtSolução: A porta está ocupada. Use outra porta:
- Flask: Altere
port=5000paraport=5001emflask_app.py - FastAPI: Execute com
uvicorn fastapi_app:app --reload --port 8001
Solução: Verifique se a aplicação está rodando. Confira o terminal do PyCharm.
Solução: Execute como administrador:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser- Métodos HTTP (GET, POST, PUT, DELETE)
- Status Codes (200, 201, 404, 400, 422, 500)
- Content-Type e Headers
- JSON como formato de dados
- Implementar Flask "Hello World"
- Transformar Flask em RESTful API
- Servir API Flask pelo PyCharm
- Criar guia de testes Postman para Flask
- Implementar FastAPI "Hello World"
- Adicionar métodos REST ao FastAPI
- Configurar Uvicorn para servir FastAPI
- Criar guia de testes Postman para FastAPI
- Documentar diferenças entre Flask e FastAPI
- Criar README completo
- RESTful Design: Implementação correta de verbos HTTP e status codes
- API Development: Criação de endpoints CRUD completos
- Framework Comparison: Entendimento das diferenças práticas entre Flask e FastAPI
- Testing: Uso do Postman para validação de APIs
- Documentation: Importância de documentação automática (FastAPI) vs manual
- As aplicações usam um "banco de dados" em memória (lista Python)
- Os dados são perdidos quando a aplicação é reiniciada
- Para produção, seria necessário integrar com banco de dados real (PostgreSQL, MongoDB, etc.)
- FastAPI oferece documentação interativa automática em
/docs - Ambas as APIs seguem os princípios REST
Bruno
Universidade Presbiteriana Mackenzie
Engenharia de Software - APIs e Microsserviços
Outubro de 2025
Este projeto foi desenvolvido para fins educacionais como parte da disciplina de Engenharia de Software.
Dúvidas? Consulte o arquivo POSTMAN_TESTING_GUIDE.md para instruções detalhadas de teste!