O FastAPI se consolidou como um dos frameworks web mais populares e amados do ecossistema Python. Combinando a velocidade do uvicorn/starlette com a validação rigorosa do Pydantic, ele oferece uma experiência de desenvolvimento incomparável.
Com o lançamento do Pydantic v2 (reescrito em Rust), a performance de validação de schemas teve um ganho de até 5x a 20x.
Estrutura Básica de uma API FastAPI
Veja um exemplo prático de um endpoint para gerenciamento de membros da comunidade UraPython:
from fastapi import FastAPI, HTTPException, status
from pydantic import BaseModel, EmailStr, Field
from typing import List, Optional
app = FastAPI(
title="UraPython Community API",
description="API oficial da comunidade Python de Uberaba",
version="1.0.0"
)
class DevMember(BaseModel):
id: int
name: str = Field(..., min_length=3, max_length=100)
email: EmailStr
favorite_framework: str = "FastAPI"
is_speaker: bool = False
favorite_dino: Optional[str] = "Uberabatitan"
# Banco de dados em memória para demonstração
MEMBERS_DB: List[DevMember] = [
DevMember(id=1, name="Artur Arantes", email="artur@urapython.org", is_speaker=True),
DevMember(id=2, name="Marina Silva", email="marina@dev.br", favorite_framework="Django")
]
@app.get("/members", response_model=List[DevMember])
async def list_community_members():
"""Retorna todos os desenvolvedores cadastrados na comunidade"""
return MEMBERS_DB
@app.post("/members", status_code=status.HTTP_201_CREATED, response_model=DevMember)
async def register_member(member: DevMember):
"""Cadastra um novo membro na comunidade UraPython"""
MEMBERS_DB.append(member)
return member
Por que migrar para Pydantic v2?
- Rust Core: A validação agora ocorre na camada nativa em Rust (
pydantic-core), eliminando gargalos de CPU em parsing JSON complexos. - ModelSerializer Flexível: Permite transformar dados antes da resposta com facilidade.
- Injeção de Dependências Dinâmica: O FastAPI aproveita totalmente o sistema de tipos sem necessidade de boilerplate.
Conclusão
FastAPI é a escolha ideal para microsserviços modernos, APIs para aplicações mobile e backends para ecossistemas web em Python. Quer aprender mais na prática? Venha apresentar um lightning talk no nosso próximo encontro em Uberaba!