📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Especialização em Backend com Python e FastAPI. Recomendado revisar antes de começar.
📁 Código deste projeto:
api-fastapi/(os caminhos citados abaixo são relativos à subpasta).
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
cd catalogo_projetos/python_web_gastos_01_fastapi/api-fastapi
python -m venv .venv
source .venv/bin/activate # No Windows: .venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
Abra no navegador http://localhost:8000/docs para visualizar a documentação interativa gerada pelo Swagger UI.
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 Catálogo de Projetos | 🏠 Página Inicial do Portal |