Sobes.tech
Senior

¿Cómo se procesa la solicitud entrante a través del manejador hasta el modelo de dominio en una arquitectura hexagonal, que consta de tres elementos: adaptador, puerto y aplicación central?

sobes.tech AI

Respuesta de la IA

En la Arquitectura Hexagonal, la solicitud entrante primero llega a un adaptador, que sirve como interfaz entre el mundo exterior y la aplicación. Por ejemplo, un manejador HTTP en Go recibe la solicitud y la transforma en una llamada a un puerto, que es una interfaz que define las operaciones disponibles para la aplicación central.

El puerto encapsula la lógica de negocio y define los contratos de interacción. El manejador llama a los métodos del puerto, pasando los datos necesarios. La aplicación central (modelo de dominio) implementa la lógica, basándose en los datos del puerto, y devuelve el resultado.

Ejemplo en Go:

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

// Adaptador (manejador 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)
    }
}

De esta manera, el manejador adapta la solicitud externa a una llamada al puerto, que está implementado en la aplicación central (modelo de dominio).