Saltar para o conteúdo
FastAPI: Criando APIs Modernas com Python
Python

FastAPI: Criando APIs Modernas com Python

10 de maio de 2026·Paulo Pereira

Por que FastAPI?

FastAPI ganhou enorme popularidade nos últimos anos por combinar velocidade, simplicidade e robustez. Baseado em Starlette e Pydantic, oferece performance comparável ao Node.js e Go, com a produtividade do Python.

Setup Inicial

pip install fastapi uvicorn[standard] pydantic
# main.py
from fastapi import FastAPI

app = FastAPI(title="Minha API", version="1.0.0")

@app.get("/")
async def root():
    return {"message": "API funcionando!"}

Para rodar:

uvicorn main:app --reload

Modelos com Pydantic

O coração do FastAPI é a validação automática via Pydantic:

from pydantic import BaseModel, EmailStr
from typing import Optional

class Usuario(BaseModel):
    nome: str
    email: EmailStr
    idade: Optional[int] = None

@app.post("/usuarios", status_code=201)
async def criar_usuario(usuario: Usuario):
    # FastAPI valida automaticamente o body da requisição
    return {"id": 1, **usuario.model_dump()}

Parâmetros de Path e Query

from typing import List

@app.get("/usuarios/{usuario_id}")
async def buscar_usuario(usuario_id: int, campos: List[str] = None):
    # usuario_id vem do path, campos é query param opcional
    return {"id": usuario_id, "campos": campos}

Dependências

O sistema de injeção de dependências é uma das features mais poderosas:

from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

async def get_current_user(token: str = Depends(oauth2_scheme)):
    user = verificar_token(token)
    if not user:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Token inválido"
        )
    return user

@app.get("/me")
async def read_profile(current_user = Depends(get_current_user)):
    return current_user

Documentação Automática

FastAPI gera Swagger UI em /docs e ReDoc em /redoc automaticamente — sem nenhuma configuração adicional. Isso acelera muito o desenvolvimento em equipe.

Async e Performance

import httpx

@app.get("/dados-externos")
async def buscar_dados():
    async with httpx.AsyncClient() as client:
        resp = await client.get("https://api.exemplo.com/dados")
        return resp.json()

FastAPI é nativo async, então chamadas I/O não bloqueiam o event loop — fundamental para APIs com alta concorrência.

Conclusão

FastAPI é hoje uma das melhores escolhas para APIs Python: tipagem forte, validação automática, documentação gerada e performance excelente. Vale muito o investimento no aprendizado.