Go je zanimljiv programski jezik za izradu modernih web aplikacija kao i sistemskog softvera. Izazvao je veliki interes nakon objavljivanja i pokreće usluge kao što su Docker, Kubernetes, Terraform, Dropbox i Netflix .
Nadalje, Go-ova robusna zbirka ugrađenih paketa čini ga odličnim izborom za web programiranje. Ovaj članak će vam pokazati kako napisati osnovni web poslužitelj u Gou.
Uvezite potrebne pakete
Paket net/HTTP pruža sve što je potrebno za izradu web poslužitelja i klijenta. Ovaj paket predstavlja neke korisne funkcije za rukovanje web programiranjem.
Možete ga uvesti dodavanjem donjeg retka na početak izvornog koda:
import "net/http"
Članak će također koristiti fmt paket za formatiranje nizova i log paket za obradu pogrešaka. Možete ih uvesti pojedinačno kao što je gore prikazano ili uvesti sve pakete pomoću jedne naredbe za uvoz:
import (
"fmt"
"log"
"net/http"
)
Možete nastaviti s pisanjem glavne funkcije nakon uvoza potrebnih paketa. Samo naprijed i spremite izvornu datoteku s nastavkom .go . Ako koristite Vim , koristite donju naredbu za spremanje i izlazak iz Vima:
:wq server.go
Napiši glavnu funkciju
Go programi nalaze se izravno unutar glavne funkcije, prikladno nazvane "main". Ovdje ćete morati uputiti poziv poslužitelju . Dodajte sljedeće retke izvornom kodu i pogledajte što rade:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Primjer je definiranje glavne funkcije pomoću ključne riječi func . Go ima stroga pravila o postavljanju otvora za otvaranje, pa provjerite je li početni nosač na ispravnoj liniji. Prva izjava u glavnom definira da će svim web zahtjevima prema korijenskoj stazi ( "/" ) upravljati indeks, funkcija tipa http.HandlerFunc .
Drugi redak pokreće web poslužitelj putem funkcije http.ListenAndServe . Signalizira poslužitelju da neprekidno osluškuje dolazne HTTP zahtjeve na portu 8080 poslužitelja. Drugi parametar ove funkcije potreban je za blokiranje programa do kraja.
Budući da http.ListenAndServe uvijek vraća pogrešku, primjer omata ovaj poziv unutar dnevnika. Fatalni poziv . Ova izjava bilježi sve poruke o grešci generirane na strani poslužitelja.
Implementirati funkcije obrade
Kao što vidite, glavna funkcija poziva indeks funkcije rukovatelja za obradu zahtjeva klijenta. Međutim, primjer još nije definirao ovu funkcionalnost za svoj poslužitelj.
Dodajmo potrebne izjave kako bi funkcija indeksa bila upotrebljiva:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Ova funkcija uzima dva različita argumenta tipa http.ResponseWriter i http.Request . Parametar http.ResponseWriter sadrži odgovor poslužitelja na dolazni zahtjev, u obliku http.Request objekta .
Funkcija Fprintf iz paketa fmt koristi se za prikaz i manipuliranje tekstualnim nizovima. Članak koristi ovo za prikaz odgovora poslužitelja na web zahtjeve. Konačno, element r.URL.Path[1:] koristi se za dohvaćanje podataka nakon korijenske staze.
Dodajte sve preostale dijelove
Vaš Go web poslužitelj bit će spreman nakon što dodate sve preostale komponente. Kod će izgledati ovako:
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))
}
Prvi redak potreban je za kompajliranje ovog koda Go web poslužitelja kao izvršne datoteke.

Kompajlirajte ovaj kôd Go web poslužitelja kao izvršnu datoteku