Go je zaujímavý programovací jazyk na vytváranie moderných webových aplikácií, ako aj systémového softvéru. Po svojom vydaní vyvolal obrovský rozruch a poháňa služby ako Docker, Kubernetes, Terraform, Dropbox a Netflix .
Robustná kolekcia vstavaných balíkov Go z neho navyše robí skvelú voľbu pre webové programovanie. Tento článok vám ukáže, ako napísať základný webový server v Go.
Importujte potrebné balíčky
Balík net/HTTP poskytuje všetko potrebné na vytvorenie webového servera a klienta. Tento balík predstavuje niekoľko užitočných funkcií na ovládanie webového programovania.
Môžete ho importovať pridaním riadku nižšie na začiatok zdrojového kódu:
import "net/http"
V článku sa tiež použije balík fmt na formátovanie reťazcov a balík denníkov na spracovanie chýb. Môžete ich importovať jednotlivo, ako je uvedené vyššie, alebo importovať všetky balíky pomocou jediného príkazu importu:
import (
"fmt"
"log"
"net/http"
)
Po importovaní potrebných balíkov môžete pokračovať v písaní hlavnej funkcie. Pokračujte a uložte zdrojový súbor s príponou .go . Ak používate Vim , použite príkaz nižšie na uloženie a ukončenie Vim:
:wq server.go
Napíšte hlavnú funkciu
Programy Go sa nachádzajú priamo v hlavnej funkcii, ktorá sa vhodne nazýva „hlavná“. Tu budete musieť zavolať na server . Pridajte nasledujúce riadky do zdrojového kódu a uvidíte, čo robia:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Príkladom je definovanie hlavnej funkcie pomocou kľúčového slova func . Go má prísne pravidlá týkajúce sa umiestnenia otváracej výstuhy, takže sa uistite, že počiatočná výstuha je na správnej línii. Prvý príkaz v main definuje, že všetky webové požiadavky na koreňovú cestu ( "/" ) budú spracované indexom, funkciou typu http.HandlerFunc .
Druhý riadok spúšťa webový server cez funkciu http.ListenAndServe . Signalizuje serveru, aby neustále počúval prichádzajúce požiadavky HTTP na porte servera 8080. Druhý parameter tejto funkcie je potrebný na zablokovanie programu až do konca.
Keďže http.ListenAndServe vždy vráti chybu, príklad zabalí toto volanie do volania log.Fatal . Tento príkaz zaznamenáva všetky chybové hlásenia generované na strane servera.
Implementujte funkcie spracovania
Ako vidíte, hlavná funkcia volá index funkcie handlera na spracovanie požiadaviek klienta. Príklad však ešte nedefinoval túto funkcionalitu pre svoj server.
Pridajme potrebné príkazy, aby bola funkcia indexu použiteľná:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Táto funkcia používa dva rôzne argumenty typu http.ResponseWriter a http.Request . Parameter http.ResponseWriter obsahuje odpoveď servera na prichádzajúcu požiadavku vo forme objektu http.Request .
Funkcia Fprintf z balíka fmt sa používa na zobrazenie a manipuláciu s textovými reťazcami. Tento článok to používa na zobrazenie odpovede servera na webové požiadavky. Nakoniec sa prvok r.URL.Path[1:] používa na získanie údajov za koreňovou cestou.
Pridajte všetky zvyšné časti
Váš webový server Go bude pripravený, keď pridáte všetky zostávajúce komponenty. Kód bude vyzerať takto:
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))
}
Prvý riadok je potrebný na kompiláciu tohto kódu webového servera Go ako spustiteľného súboru.

Kompilujte tento kód webového servera Go ako spustiteľný súbor