Go ist eine interessante Programmiersprache zum Erstellen moderner Webanwendungen sowie Systemsoftware. Nach seiner Veröffentlichung sorgte es für großes Aufsehen und unterstützt Dienste wie Docker, Kubernetes, Terraform, Dropbox und Netflix .
Darüber hinaus ist Go aufgrund seiner umfangreichen Sammlung integrierter Pakete eine hervorragende Wahl für die Webprogrammierung. In diesem Artikel erfahren Sie, wie Sie einen einfachen Webserver in Go schreiben.
Importieren Sie die erforderlichen Pakete
Das net/HTTP-Paket bietet alles, was zum Erstellen eines Webservers und Clients erforderlich ist. Dieses Paket enthält einige nützliche Funktionen für die Webprogrammierung.
Sie können es importieren, indem Sie die folgende Zeile am Anfang Ihres Quellcodes hinzufügen:
import "net/http"
Der Artikel verwendet außerdem das FMT- Paket zum Formatieren von Zeichenfolgen und das Protokollpaket zum Behandeln von Fehlern. Sie können sie wie oben gezeigt einzeln importieren oder alle Pakete mit einer einzigen Importanweisung importieren:
import (
"fmt"
"log"
"net/http"
)
Sie können mit dem Schreiben der Hauptfunktion fortfahren, nachdem Sie die erforderlichen Pakete importiert haben. Fahren Sie fort und speichern Sie die Quelldatei mit der Erweiterung .go . Wenn Sie Vim verwenden , verwenden Sie den folgenden Befehl, um Vim zu speichern und zu beenden:
:wq server.go
Schreiben Sie die Hauptfunktion
Go-Programme befinden sich direkt in der Hauptfunktion, die treffend „main“ genannt wird. Hier müssen Sie einen Serveraufruf durchführen . Fügen Sie die folgenden Zeilen zum Quellcode hinzu und sehen Sie, was sie bewirken:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Das Beispiel definiert die Hauptfunktion mit dem Schlüsselwort func . Go hat strenge Regeln für die Position der Eröffnungsklammer. Stellen Sie daher sicher, dass die Startklammer auf der richtigen Linie liegt. Die erste Anweisung in main definiert, dass alle Webanfragen an den Stammpfad ( „/“ ) vom Index verarbeitet werden, einer Funktion vom Typ http.HandlerFunc .
Die zweite Zeile startet den Webserver über die Funktion http.ListenAndServe . Es signalisiert dem Server, kontinuierlich auf eingehende HTTP-Anfragen am Port 8080 des Servers zu warten. Der zweite Parameter dieser Funktion wird benötigt, um das Programm bis zum Ende zu blockieren.
Da http.ListenAndServe immer einen Fehler zurückgibt, schließt das Beispiel diesen Aufruf in einen log.Fatal- Aufruf ein . Diese Anweisung protokolliert alle serverseitig generierten Fehlermeldungen.
Verarbeitungsfunktionen implementieren
Wie Sie sehen können, ruft die Hauptfunktion den Handler-Funktionsindex auf, um Clientanforderungen zu verarbeiten. Das Beispiel hat diese Funktionalität jedoch noch nicht für seinen Server definiert.
Fügen wir die notwendigen Anweisungen hinzu, um die Indexfunktion nutzbar zu machen:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Diese Funktion benötigt zwei verschiedene Argumente vom Typ http.ResponseWriter und http.Request . Der Parameter http.ResponseWriter enthält die Antwort des Servers auf die eingehende Anfrage in Form eines http.Request- Objekts .
Die Funktion Fprintf aus dem fmt- Paket dient der Anzeige und Bearbeitung von Textzeichenfolgen. Der Artikel verwendet dies, um die Antwort des Servers auf Webanfragen anzuzeigen. Schließlich wird das Element r.URL.Path[1:] verwendet, um Daten nach dem Stammpfad abzurufen.
Fügen Sie alle restlichen Teile hinzu
Ihr Go-Webserver ist bereit, sobald Sie alle verbleibenden Komponenten hinzugefügt haben. Der Code sieht folgendermaßen aus:
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))
}
Die erste Zeile wird benötigt, um diesen Go-Webservercode als ausführbare Datei zu kompilieren.
Kompilieren Sie diesen Go-Webservercode als ausführbare Datei