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