Sobes.tech
Назад к вопросам
Senior
2

Hexagonal Architecture состоит из трёх элементов: адаптер, порт и центральное приложение. Как обрабатывается входящий request через handler до domain модели?

Компании, где спрашивали
ИП Ганус Александр Андреевич

Ответ от нейросети

sobes.tech AI

В Hexagonal Architecture входящий запрос сначала попадает в адаптер (adapter), который служит интерфейсом между внешним миром и приложением. Например, HTTP handler в Go принимает запрос и преобразует его в вызов порта (port) — интерфейса, определяющего операции, доступные центральному приложению.

Порт инкапсулирует бизнес-логику и определяет контракты взаимодействия. Handler вызывает методы порта, передавая необходимые данные. Центральное приложение (domain model) реализует логику, опираясь на данные из порта, и возвращает результат.

Пример на Go:

// Порт
type UserService interface {
    CreateUser(name string) error
}

// Адаптер (HTTP handler)
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)
    }
}

Таким образом, handler адаптирует внешний запрос к вызову порта, который реализован в центральном приложении (domain model).