Interneto svetainių serverio dalies kūrimas
Pamoka 1 / 11 HTTP pagrindai ir pirmasis serveris ~40 min
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.