Sobes.tech
Senior

Kako se ulazni zahtev obrađuje putem handler-a do domen modela u heksagonalnoj arhitekturi, koja se sastoji od tri elementa: adapter, port i centralna aplikacija?

sobes.tech АИ

Одговор од АИ

У хексагоналној архитектури, долазни захтев прво стиже до адаптера (адаптер), који служи као интерфејс између спољног света и апликације. На пример, HTTP handler у Go-у прими захтев и претвори га у позив порта (порт), који је интерфејс који дефинише операције доступне централној апликацији.

Порт инкапсулира пословну логике и дефинише уговоре о интеракцији. Handler позива методе порта, преносећи потребне податке. Централна апликација (модел домена) имплементира логику, ослањајући се на податке из порта, и враћа резултат.

Пример у 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 прилагођава спољашњи захтев позиву порта, који је имплементиран у централној апликацији (модел домена).