Sobes.tech
Senior

Шестолинейната архитектура се състои от три елемента: адаптер, порт и централно приложение. Как се обработва входящата заявка чрез handler до модел на домейна?

sobes.tech AI

Отговор от AI

В хексагоналната архитектура, входящият заявка първо попада в адаптер, който служи като интерфейс между външния свят и приложението. Например, HTTP обработчик в Go приема заявката и я преобразува в извикване към порт, който е интерфейс, определящ операциите, достъпни за централното приложение.

Портът инкапсулира бизнес логиката и определя контрактите за взаимодействие. Обработчикът извиква методите на порта, предавайки необходимите данни. Централното приложение (модел на домейна) реализира логиката, базирайки се на данните от порта, и връща резултата.

Пример в Go:

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

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

По този начин, обработчикът адаптира външния заявка към извикване на порт, който е реализиран в централното приложение (модел на домейна).