📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Especialização em Backend com Python e FastAPI. Recomendado revisar antes de começar.
v1.0 — FastAPI, Pydantic v2, SQLAlchemy 2.0 e Swagger OpenAPI Automático
Trilha de Especialização Pedagógica — Projeto 1 de 4
- ➡️ v1 (este): API RESTful Assíncrona · FastAPI · Pydantic v2 · SQLite
- v2: Autenticação OAuth2 com JWT & Hashing Passlib
- v3: Integração com Celery, Redis & Tarefas Assíncronas
- v4: Microsserviços com Docker, Pytest & Cobertura 100%
🎓 Nível Profissional Simulado: Desenvolvedor Python Júnior. FastAPI revolucionou o desenvolvimento backend em Python com sua velocidade extrema, validação automática baseada em Type Hints com Pydantic v2 e documentação Swagger gerada sem nenhum esforço manual.
—`
Construir uma API RESTful Assíncrona de Controle Financeiro em Python 3.12 + FastAPI, utilizando Pydantic v2 para validação estrita de esquemas e SQLAlchemy 2.0 para persistência de dados com documentação interativa em /docs.
—`
“Precisamos de uma API moderna em Python para registrar lançamentos de despesas. A API deve validar que nenhum valor seja negativo, que as datas sejam válidas e deve disponibilizar uma interface Swagger interativa para os desenvolvedores testarem os endpoints direto pelo navegador.”
| ID | Tipo | Descrição | Origem no Briefing |
|---|---|---|---|
| RF01 | Funcional | Endpoint POST /gastos para criação com validação Pydantic de valor estritamente positivo (gt=0). |
“validar nenhum valor negativo” |
| RF02 | Funcional | Endpoint GET /gastos com cálculo de totalizadores. |
“registrar despesas” |
| RF03 | Funcional | Endpoint DELETE /gastos/{id} com retorno 204 No Content. |
“gerenciar lançamentos” |
| RNF01 | Não-Funcional | Documentação OpenAPI / Swagger interativa gerada automaticamente na rota /docs. |
“interface Swagger interativa” |
| RNF02 | Não-Funcional | Type Hints estritos com Python 3.12. | Tipagem Estática |
—`
| ID | User Story | Prioridade |
|---|---|---|
| US01 | Como desenvolvedor, quero abrir o Swagger no /docs e testar a API sem Postman. |
Alta |
| US02 | Como usuário, quero cadastrar despesas e receber confirmação instantânea. | Alta |
—`
# Branch da funcionalidade
git checkout -b feature/US01-fastapi-pydantic-crud
# Executar a API com Uvicorn em modo reload
uvicorn main:app --reload --port 8000
—`
main.py)from fastapi import FastAPI, HTTPException, status
from pydantic import BaseModel, Field
app = FastAPI(title="Controle de Gastos API", version="1.0.0")
class GastoSchema(BaseModel):
id: int | None = None
descricao: str
valor: float = Field(gt=0, description="O valor deve ser estritamente positivo")
banco_memoria = []
@app.post("/gastos", status_code=status.HTTP_201_CREATED)
def criar_gasto(gasto: GastoSchema):
gasto.id = len(banco_memoria) + 1
banco_memoria.append(gasto)
return gasto
@app.get("/gastos")
def listar_gastos():
return banco_memoria
—`
No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:
cd python_web_gastos_01_fastapi
pip install -r requirements.txt
uvicorn app:app --reload
# ou python main.py
[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd proj_aplicacoes_full_stack/projetos/python_web_gastos_01_fastapi`
—`
http://localhost:8000/docs para validar o Swagger interativo gerado em tempo de execução.—`
- Endpoints RESTful respondendo no FastAPI.
- Pydantic bloqueando valores
<= 0com código422.
| ⬅️ Ver Todos os Projetos no Super-Hub | 🏠 Página Inicial do Portal |