Go ir interesanta programmēšanas valoda modernu tīmekļa lietojumprogrammu, kā arī sistēmas programmatūras izveidei. Pēc izlaišanas tas radīja milzīgu ažiotāžu un nodrošina tādus pakalpojumus kā Docker, Kubernetes, Terraform, Dropbox un Netflix .
Turklāt Go spēcīgā iebūvēto pakešu kolekcija padara to par lielisku izvēli tīmekļa programmēšanai. Šajā rakstā tiks parādīts, kā lietotnē Go uzrakstīt pamata tīmekļa serveri .
Importējiet nepieciešamās paketes
Net/HTTP pakotne nodrošina visu nepieciešamo, lai izveidotu tīmekļa serveri un klientu. Šī pakotne piedāvā dažas noderīgas funkcijas tīmekļa programmēšanai.
Varat to importēt, avota koda sākumā pievienojot tālāk norādīto rindiņu.
import "net/http"
Rakstā tiks izmantota arī pakotne fmt , lai formatētu virknes, un žurnāla pakotne , lai apstrādātu kļūdas. Varat tos importēt atsevišķi, kā parādīts iepriekš, vai importēt visas pakotnes, izmantojot vienu importēšanas paziņojumu:
import (
"fmt"
"log"
"net/http"
)
Pēc nepieciešamo pakotņu importēšanas varat turpināt rakstīt galveno funkciju. Turpiniet un saglabājiet avota failu ar paplašinājumu .go . Ja izmantojat Vim , izmantojiet tālāk norādīto komandu, lai saglabātu un izietu no Vim:
:wq server.go
Uzrakstiet galveno funkciju
Go programmas atrodas tieši galvenajā funkcijā, kuras nosaukums ir "galvenais". Šeit jums būs jāveic servera zvans . Pievienojiet avota kodam šādas rindiņas un skatiet, ko tās dara:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Piemērā ir definēta galvenā funkcija, izmantojot atslēgvārdu func . Go ir stingri noteikumi par atvēršanas kronšteina novietojumu, tāpēc pārliecinieties, vai sākuma stiprinājums atrodas uz pareizās līnijas. Pirmais paziņojums galvenajā definē, ka visi tīmekļa pieprasījumi saknes ceļam ( "/" ) tiks apstrādāti, izmantojot indeksu, kas ir http.HandlerFunc tipa funkcija .
Otrajā rindā tiek palaists tīmekļa serveris, izmantojot funkciju http.ListenAndServe . Tas signalizē serverim, lai tas nepārtraukti klausās ienākošos HTTP pieprasījumus servera portā 8080. Otrais šīs funkcijas parametrs ir nepieciešams, lai bloķētu programmu līdz beigām.
Tā kā http.ListenAndServe vienmēr atgriež kļūdu, piemērā šis izsaukums tiek iekļauts žurnālā.Fatal call . Šis paziņojums reģistrē visus servera pusē ģenerētos kļūdu ziņojumus.
Ieviest apstrādes funkcijas
Kā redzat, galvenā funkcija izsauc apdarinātāja funkcijas indeksu, lai apstrādātu klientu pieprasījumus. Tomēr piemērā šī funkcionalitāte savam serverim vēl nav definēta.
Pievienosim nepieciešamos paziņojumus, lai indeksa funkcija būtu lietojama:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Šai funkcijai ir nepieciešami divi dažādi argumenti: http.ResponseWriter un http.Request . Parametrs http.ResponseWriter satur servera atbildi uz ienākošo pieprasījumu objekta http.Request veidā .
Funkcija Fprintf no fmt pakotnes tiek izmantota, lai parādītu un apstrādātu teksta virknes. Rakstā tas tiek izmantots, lai parādītu servera atbildi uz tīmekļa pieprasījumiem. Visbeidzot, elements r.URL.Path[1:] tiek izmantots, lai iegūtu datus pēc saknes ceļa.
Pievienojiet visas atlikušās daļas
Jūsu Go tīmekļa serveris būs gatavs, tiklīdz būsiet pievienojis visus atlikušos komponentus. Kods izskatīsies šādi:
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))
}
Pirmā rinda ir nepieciešama, lai apkopotu šo Go tīmekļa servera kodu kā izpildāmu failu.

Kompilējiet šo Go tīmekļa servera kodu kā izpildāmu failu