Sobes.tech
Senior

A hatszögletű architektúra három elemből áll: adapter, port és központi alkalmazás. Hogyan kezelődik a bejövő kérés a handler-en keresztül a domain modellé?

sobes.tech MI

Válasz az MI-től

Hexagonális architektúrában a bejövő kérés először egy adapterhez (adapter) érkezik, amely a külvilág és az alkalmazás között szolgál interfészként. Például, egy Go-ban írt HTTP kezelő fogadja a kérést, és átalakítja egy port hívásává, amely egy interfész, és meghatározza a központi alkalmazás számára elérhető műveleteket.

A port inkapszulálja az üzleti logikát, és meghatározza az interakciós szerződéseket. A kezelő meghívja a port metódusait, átadva a szükséges adatokat. A központi alkalmazás (domaingramatika) végrehajtja a logikát a port adatai alapján, és visszaadja az eredményt.

Példa Go-ban:

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

// Adapter (HTTP kezelő)
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)
    }
}

Így a kezelő azonosítja a külső kérést a port hívásával, amely a központi alkalmazásban (domaingramatika) van implementálva.