📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Especialização em Backend com Python e FastAPI. Recomendado revisar antes de começar.

🐍 API de Controle de Gastos com Python & FastAPI

v1.0 — FastAPI, Pydantic v2, SQLAlchemy 2.0 e Swagger OpenAPI Automático

Trilha de Especialização Pedagógica — Projeto 1 de 4

🎓 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.

—`

🎯 Objetivo & Escopo do Projeto

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.

—`

🧑‍💼 Fase 1 — Levantamento de Requisitos

O Briefing do Cliente (Equipe Financeira)

“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.”

Requisitos Funcionais (RF) e Não-Funcionais (RNF)

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

—`

📋 Fase 2 — Backlog & User Stories

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

—`

🌿 Fase 3 — Engenharia em Equipe (Git Flow & Setup)

# 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

—`

🛠️ Fase 4 — Implementação Guiada (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

—`

🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd python_web_gastos_01_fastapi

2. Execute a aplicação e os testes

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`

🧭 Decisões de Arquitetura (ADRs)

—`

🧪 Testes de Validação & Swagger

—`

✅ Checkpoint Final

  1. Endpoints RESTful respondendo no FastAPI.
  2. Pydantic bloqueando valores <= 0 com código 422.

⬅️ Ver Todos os Projetos no Super-Hub 🏠 Página Inicial do Portal