Pular para conteúdo

Aula 20 - Projeto Capstone: API Python FastAPI Ultrarrápida 🏆

Objetivo Pedagógico

Objetivo: Construção de uma API completa em Python de padrão corporativo, integrando FastAPI, SQLAlchemy 2.0 assíncrono, tarefas Celery, cache Redis e testes com Pytest.


📑 1. Fundamentos Teóricos & Análise Técnica

O Projeto Capstone de Especialização em Backend Python consolida todas as competências práticas da disciplina através da concepção e entrega de um Sistema de Gestão de Catálogo e Reservas de Alta Escala.

O sistema simula um ambiente de produção real onde picos de acessos exigem desacoplamento entre consultas e processamentos analíticos.

O projeto avalia as seguintes implementações de engenharia: 1. Estrutura Modular de Alta Coesão: Divisão da aplicação em camadas de domínios (Routers, Services, Repositories, Schemas). 2. Camada de Persistência Assíncrona: PostgreSQL gerenciado via SQLAlchemy 2.0 com migrações automatizadas no Alembic. 3. Fila de Notificações e Tarefas em Background: Processamento de e-mails e confirmação de reservas via Celery com Redis Broker. 4. Suíte Completa de Testes com Pytest: Testes de integração assíncronos utilizando banco de dados em memória e cliente HTTP httpx.AsyncClient.

📐 Arquitetura Conceitual & Diagrama de Fluxo

graph TD
    Client["Cliente / Frontend"] --> API["FastAPI Application"]
    API --> Cache["Redis Cache (Consultas Frequentes)"]
    API --> DB["PostgreSQL Assíncrono (SQLAlchemy 2.0)"]
    API --> Queue["Redis Queue (Mensagens Celery)"]
    Queue --> Worker["Worker Celery (Processamento de Reservas)"]
    Worker --> Email["Servidor SMTP / Notificações"]
    style Client fill:#e1f5fe,stroke:#01579b
    style API fill:#fff3e0,stroke:#e65100
    style DB fill:#e8f5e9,stroke:#2e7d32
    style Worker fill:#f3e5f5,stroke:#7b1fa2

🔍 Pilares e Diretrizes Técnicas

Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Assincronismo Extremo: Operações de banco e cache executadas sem interrupção do loop de eventos principal. - Arquitetura de Três Camadas: Controlador limpo delegando para serviço de domínio e repositório de persistência. - Resiliência a Falhas: Isolamento de tarefas em background para que falhas de e-mail não abortem o cadastro de reservas. - Configuração Baseada em 12-Factor App: Gerenciamento centralizado de variáveis de ambiente com Pydantic BaseSettings.


🛠️ 2. Implementação Prática em FastAPI, PostgreSQL, Redis e Docker

Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:

// test_api_integration.py (Teste de Integração Assíncrono com Pytest)
import pytest
from httpx import AsyncClient, ASGITransport
from main_api import app

@pytest.mark.asyncio
async def test_create_user_success():
    transport = ASGITransport(app=app)
    async with AsyncClient(transport=transport, base_url="http://test") as client:
        payload = {
            "name": "Maria Silva",
            "email": "maria.silva@empresa.com",
            "age": 28
        }
        response = await client.post("/users", json=payload)

        assert response.status_code == 201
        data = response.json()
        assert data["data"]["email"] == "maria.silva@empresa.com"
        assert "message" in data

💡 Análise Passo a Passo do Código

  1. Pytest Assíncrono: @pytest.mark.asyncio habilita a execução de testes assíncronos nativos sem blocos síncronos artificiais.
  2. ASGITransport sem Servidor: O teste comunica-se diretamente com o app FastAPI em memória sem abrir portas de rede físicas.
  3. Asserções Determinísticas: Validação rigorosa do código de status HTTP e das chaves do payload retornado.

🎯 3. Próximos Passos & Sequência Didática