Go je zanimiv programski jezik za izdelavo sodobnih spletnih aplikacij in sistemske programske opreme. Po izdaji je povzročil veliko pozornosti in poganja storitve, kot so Docker, Kubernetes, Terraform, Dropbox in Netflix .
Poleg tega je zaradi robustne zbirke vgrajenih paketov Go odlična izbira za spletno programiranje. Ta članek vam bo pokazal, kako napisati osnovni spletni strežnik v Go.
Uvozite potrebne pakete
Paket net/HTTP nudi vse potrebno za izdelavo spletnega strežnika in odjemalca. Ta paket predstavlja nekaj uporabnih funkcij za upravljanje spletnega programiranja.
Lahko ga uvozite tako, da na začetek izvorne kode dodate spodnjo vrstico:
import "net/http"
Članek bo uporabljal tudi paket fmt za oblikovanje nizov in paket dnevnika za obravnavanje napak. Lahko jih uvozite posamično, kot je prikazano zgoraj, ali uvozite vse pakete z enim uvoznim stavkom:
import (
"fmt"
"log"
"net/http"
)
Po uvozu potrebnih paketov lahko nadaljujete s pisanjem glavne funkcije. Kar naprej in shranite izvorno datoteko s pripono .go . Če uporabljate Vim , uporabite spodnji ukaz, da shranite in zapustite Vim:
:wq server.go
Napišite glavno funkcijo
Programi Go se nahajajo neposredno znotraj glavne funkcije, primerno imenovane "main". Tukaj boste morali poklicati strežnik . Izvorni kodi dodajte naslednje vrstice in si oglejte, kaj počnejo:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Primer je definiranje glavne funkcije s ključno besedo func . Go ima stroga pravila glede postavitve začetne oklepaje, zato se prepričajte, da je začetna opornica na pravi liniji. Prvi stavek v glavnem določa, da bo vse spletne zahteve do korenske poti ( "/" ) obravnaval indeks, funkcija tipa http.HandlerFunc .
Druga vrstica zažene spletni strežnik prek funkcije http.ListenAndServe . Strežniku sporoča, naj nenehno posluša dohodne zahteve HTTP na strežnikovih vratih 8080. Drugi parameter te funkcije je potreben za blokiranje programa do konca.
Ker http.ListenAndServe vedno vrne napako, primer ovije ta klic v log.Fatal call . Ta stavek beleži vsa sporočila o napakah, ustvarjena na strani strežnika.
Izvedite procesne funkcije
Kot lahko vidite, glavna funkcija kliče indeks funkcije obdelovalca za obdelavo zahtev odjemalcev. Vendar primer še ni definiral te funkcionalnosti za svoj strežnik.
Dodajmo potrebne stavke, da bo funkcija indeksa uporabna:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Ta funkcija sprejme dva različna argumenta tipa http.ResponseWriter in http.Request . Parameter http.ResponseWriter vsebuje odgovor strežnika na dohodno zahtevo v obliki objekta http.Request .
Funkcija Fprintf iz paketa fmt se uporablja za prikaz in obdelavo besedilnih nizov. Članek to uporablja za prikaz odziva strežnika na spletne zahteve. Nazadnje se element r.URL.Path[1:] uporablja za pridobivanje podatkov po korenski poti.
Dodajte vse preostale dele
Vaš spletni strežnik Go bo pripravljen, ko boste dodali vse preostale komponente. Koda bo videti takole:
import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Prva vrstica je potrebna za prevajanje te kode spletnega strežnika Go kot izvršljive datoteke.

Prevedite to kodo spletnega strežnika Go kot izvršljivo datoteko