Sobes.tech
Senior

A Arquitetura Hexagonal consiste em três elementos: adaptador, porta e aplicação central. Como é processada uma requisição de entrada através do handler até ao modelo de domínio?

sobes.tech IA

Resposta da IA

Na Arquitetura Hexagonal, a solicitação de entrada primeiro chega a um adaptador, que serve como interface entre o mundo exterior e a aplicação. Por exemplo, um manipulador HTTP em Go recebe a solicitação e a converte numa chamada a uma porta, que é uma interface que define as operações disponíveis para a aplicação central.

A porta encapsula a lógica de negócio e define os contratos de interação. O manipulador chama os métodos da porta, passando os dados necessários. A aplicação central (modelo de domínio) implementa a lógica, baseando-se nos dados da porta, e devolve o resultado.

Exemplo em Go:

// Porta
type UserService interface {
    CreateUser(name string) error
}

// Adaptador (manipulador HTTP)
func CreateUserHandler(svc UserService) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        name := r.FormValue("name")
        err := svc.CreateUser(name)
        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
        w.WriteHeader(http.StatusCreated)
    }
}

Desta forma, o manipulador adapta a solicitação externa para uma chamada à porta, que é implementada na aplicação central (modelo de domínio).