📊 Capítulo 03: Roteamento & Parâmetros HTTP
Especialização Backend com Python & FastAPI
🗺️ Como o FastAPI Mapeia Parâmetros da Requisição
flowchart TD
REQ["Requisição HTTP de Entrada"]
--> ROUTER["APIRouter do FastAPI"]
ROUTER --> PATH["Path Parameters: /produtos/{id} (Path())"]
ROUTER --> QUERY["Query Parameters: ?categoria=eletronicos&page=1 (Query())"]
ROUTER --> BODY["Request Body: JSON Payload (Pydantic Schema / Body())"]
ROUTER --> HEADERS["Headers & Cookies: Authorization, X-Request-ID (Header(), Cookie())"]
style REQ fill:#ede7f6,stroke:#512da8,stroke-width:2px
style ROUTER fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style PATH fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style QUERY fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
style BODY fill:#c8e6c9,stroke:#2e7d32,stroke-width:1.5px
style HEADERS fill:#fff9c4,stroke:#fbc02d,stroke-width:1.5px
🎯 Slide 1: Path & Query Parameters Tipados
from fastapi import APIRouter, Path, Query
router = APIRouter(prefix="/produtos", tags=["Produtos"])
@router.get("/{produto_id}")
async def buscar_produto(
produto_id: int = Path(..., gt=0, description="ID numérico do produto"),
detalhado: bool = Query(default=False, description="Incluir dados extras"),
limite: int = Query(default=20, le=100)
):
return {"id": produto_id, "detalhado": detalhado, "limite": limite}
🎯 Slide 2: Status Codes & response_model
@router.post("/", response_model=ProdutoResponse, status_code=status.HTTP_201_CREATED)
async def criar_produto(payload: ProdutoCreate):
novo_produto = await service.criar(payload)
return novo_produto
- O
response_modelgarante que apenas os campos autorizados sejam enviados de volta ao cliente (filtrando senhas e dados confidenciais automaticamente).
🎯 Slide 3: Modularização com APIRouter
-
Módulos Independentes: Divida rotas em arquivos separados (
usuarios.py,pedidos.py). - Inclusão no App Principal:
app.include_router(usuarios.router, prefix="/api/v1/usuarios", tags=["Usuários"]) app.include_router(pedidos.router, prefix="/api/v1/pedidos", tags=["Pedidos"]) - Mantém a arquitetura limpa, testável e desacoplada.
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim