3 / 4 📖 Teorija
Request ir ResponseWriter
Tavo apdorotojas gavo du argumentus — visas serverio darbas sukasi aplink juos.
r *http.Request — kas atėjo. Viskas apie užklausą:
r.Method—"GET","POST"…r.URL.Path— kelias, pvz./abc123.r.FormValue("url")— formos laukas (naudosim 4 pamokoje).
w http.ResponseWriter — ką grąžini. Į jį rašai atsakymą:
fmt.Fprintln(w, "…")— parašo kūną (tai jau darai).w.WriteHeader(301)— nustato statuso kodą.w.Header().Set("Location", "https://…")— nustato antraštę.
Sudėk juos į Trumpiklio esmę. Kai kas nors atidaro http://localhost:8080/abc123, tavo apdorotojas gaus:
r.Method = "GET"
r.URL.Path = "/abc123"
o tu norėsi atsakyti:
w.Header().Set("Location", "https://tikroji-ilga-nuoroda.lt/...")
w.WriteHeader(http.StatusMovedPermanently) // 301
Tai ir yra nukreipimas — iš r.URL.Path išsitrauki kodą abc123, randi tikrąją nuorodą ir per w grąžini 301. Šiandien to dar nedarom (visi keliai grąžina „Trumpiklis"), bet dabar matai, kaip iš r (užklausa) gimsta w (atsakymas). Kitoje pamokoje net/http „vienas apdorotojas viskam" pakeisim tikru maršrutizatoriumi (Chi), kuris atskirs /abc123 nuo / ir sujungs kodą su nuoroda.