Sobes.tech
Junior — Middle

Como é que implementas soluções arquitetónicas ao trabalhar com FastAPI?

sobes.tech IA

Resposta da IA

Ao trabalhar com FastAPI, sigo uma arquitetura modular, dividindo o projeto em camadas: roteamento, lógica de negócio, acesso a dados e modelos.

  • Rotas (routers) organizo por áreas funcionais, usando APIRouter para conveniência e escalabilidade.
  • Serviços contêm a lógica de negócio, para separá-la dos controladores.
  • Modelos Pydantic uso para validação e serialização de dados.
  • Para trabalhar com o banco de dados, uso ORM (por exemplo, SQLAlchemy) com um motor assíncrono, para não bloquear o processamento de requisições.
  • Configuração e dependências são colocadas em módulos separados, aplicando Dependency Injection através do FastAPI.

Exemplo de uma rota simples com dependência:

from fastapi import FastAPI, Depends

app = FastAPI()

def get_db():
    db = ...  # criação da sessão
    try:
        yield db
    finally:
        db.close()

@app.get("/items/{item_id}")
async def read_item(item_id: int, db=Depends(get_db)):
    item = db.query(Item).get(item_id)
    return item

Este método facilita testes, manutenção e expansão da aplicação.