Senior
Kā ienākošais pieprasījums caur handleri tiek apstrādāts līdz domēna modelim heksagonālajā arhitektūrā, kas sastāv no trim elementiem: adaptera, porta un centrālās lietojumprogrammas?
sobes.tech AI
Atbilde no AI
Hexagonālajā arhitektūrā ienākošais pieprasījums vispirms nonāk adapterī, kas kalpo kā saskarne starp ārējo pasauli un lietojumprogrammu. Piemēram, Go valodā HTTP apstrādātājs saņem pieprasījumu un pārvērš to par zvanu uz portu, kas ir saskarne, kas definē operācijas, kas pieejamas centrālajai lietojumprogrammai.
Ports inkapsulē biznesa loģiku un nosaka sadarbības līgumus. Apstrādātājs izsauc porta metodes, nododot nepieciešamos datus. Centrālā lietojumprogramma (doma modelis) īsteno loģiku, balstoties uz porta dotos datus, un atgriež rezultātu.
Piemērs Go valodā:
// Ports
type UserService interface {
CreateUser(name string) error
}
// Adapteris (HTTP apstrādātājs)
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)
}
}
Tādējādi, apstrādātājs pielāgo ārējo pieprasījumu zvanam uz portu, kas ir īstenots centrālajā lietojumprogrammā (doma modelī).