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.