Interneto svetainių serverio dalies kūrimas
Pamoka 1 / 11 HTTP pagrindai ir pirmasis serveris ~40 min
2 / 4

Sukurk main.go — pirmasis serveris

Go turi HTTP serverį standartinėje bibliotekoje — jokių papildomų paketų nereikia. Sukurk aplanką (mkdir trumpiklis, viduje go mod init trumpiklis) ir main.go.

Kas vyksta:

  • http.HandleFunc("/", ...) — „kiekvieną užklausą į / (ir žemiau) apdoros ši funkcija".
  • Funkcija gauna du dalykus: w (kur rašom atsakymą) ir r (pati užklausa). Kitame žingsnyje juos išnagrinėsim; kol kas tik rašom tekstą su fmt.Fprintln(w, ...).
  • http.ListenAndServe(":8080", nil) — paleidžia serverį prievade 8080 ir blokuoja amžinai, laukdamas užklausų. Grąžina tik įvykus klaidai, todėl apvyniojam log.Fatal.

Patikrink. Viename terminale:

go run .

Turi pamatyti:

Trumpiklis listening on http://localhost:8080

Kitame terminale (arba naršyklėje atidaryk http://localhost:8080):

curl localhost:8080
Trumpiklis

Serveris atsako „Trumpiklis" į bet kokį kelią. Programa nesibaigia — ji sukasi ir laukia; sustabdyk su Ctrl+C.

Spąstai. Paleisk go run . antrą kartą neuždaręs pirmojo (arba kai 8080 jau užimtas kito). Serveris iškart nulūžta:

listen tcp :8080: bind: address already in use

(Windows tą patį sako ilgiau: Only one usage of each socket address ... is normally permitted.) Vienu prievadu vienu metu gali klausytis tik viena programa. Sustabdyk seną serverį (Ctrl+C) arba paleisk kitame prievade (:8081). Šitą klaidą matysi dažnai — dabar žinai, ką ji reiškia.