/FastAPI-Basic

A FastAPI API with a PostgreSQL database using Ports & Adapters Architecture (Hexagonal Architecture)

Primary LanguagePython

FastAPI-Hexagonal

Esse projeto faz uso da Arquitetura Hexagonal como Design Pattern.

Isto é, todo o funcionamento da API se baseia na existência de três estruturas de dados:

  • Adapter
  • Port
  • Service

Toda requisição feita para a API faz uma chamada a um Adapter, que faz uso de uma Port para se comunicar com o Service, que é a parte central da arquitetura.

Desenho da Arquitetura

Adapter

Um adapter é um ponto de entrada para o usuário. Ele vai interagir com diretamente com uma Port para realizar o que precisa ser feito de acordo com seu endpoint.

Um Adapter é a interface em que o usuário se comunica com as regras de negócio da aplicação. Dentro dele vai ter todo o tratamento de dados necessário para se comunicar com a Port que o liga à regra de negócio do sistema.

Port

Uma port é um ponto de entrada para um Service, que é onde está toda a regra de negócio da aplicação.

Cada Port tem um Adapter específico próprio para ele e serve de interface para se chamar uma regra de negócio da aplicação.

Cada Port faz apenas a chamada aos Services e passa os dados recebidos pelos Adapters, servindo apenas como um "garçom".

Service

Cada Service contém as regras de negócio para uma funcionalidade específica da aplicação.

A única interface de comunicação com um Service é uma Port. Logo existe um fluxo para se fazer a chamada às regras de negócio, feito de forma à diminuir o acoplamento.