Das Erstellen eines Webservers mit Golang

Go ist eine großartige Sprache zum Erstellen einfacher, aber effizienter Webserver und Webdienste. Es bietet ein integriertes HTTP-Paket, das Dienstprogramme zum schnellen Erstellen eines Web-oder Dateiservers enthält.

Das Ziel dieses Tutorials ist es, einen Webserver zu erstellen, der eine GET-Anforderung akzeptieren und eine Antwort bereitstellen kann. Wir verwenden den Server, um statische Dateien bereitzustellen, die als Dateiserver fungieren. Wir lassen den Webserver dann auf eine POST-Anfrage antworten, die von einer Formularübermittlung stammt, z. B. ein Kontaktformular.,

Lassen Sie uns kurzerhand untersuchen, wie Sie Ihren ersten Webserver mit Go erstellen können.

Einrichtung

Sie müssen Go, version 1.11 oder höher, um diesem tutorial zu Folgen.

In diesem Abschnitt erstellen wir alle erforderlichen Dateien und stellen die richtige Dateistruktur her. Danach importieren wir unsere Pakete, um zu testen, ob das Setup funktioniert. Keine Sorge — das Setup ist sehr einfach für den Golang Webserver.

Erstellen Sie die folgenden Dateien und Ordner gemäß der folgenden Struktur., Die Datei befindet sich im Stammverzeichnis Ihres Projekts, ebenso wie der Ordner static, der zwei HTML-Dateien enthält: index.html und form.html.

- server.go- static/- - index.html- - form.html

Jetzt schreiben wir etwas Code. Öffnen Sie die Datei und importieren Sie die benötigten Pakete. Wir verwenden fmt, um nützliche Daten an das Terminal zu drucken, und log, um schwerwiegende Fehler zu drucken, falls der Webserver abstürzt.

Die net/http ist das wichtigste Paket., Es bietet alle Funktionen zum Erstellen eines HTTP-Clients oder einer Serverimplementierung wie eines Golang-Webservers.

package mainimport ( "fmt" "log" "net/http")

Zuletzt fügen wir eine einfache main() – Funktion in der – Datei hinzu, die eine Nachricht an das Terminal druckt.

func main() { fmt.Printf("Starting server at port 8080\n")}

Um das Setup zu testen, starten Sie den fiktiven Server mit dem folgenden Befehl.

go run server.go

Wenn Sie mit dem Setup gefolgt sind, sollten Sie die folgende Ausgabe in Ihrem Terminal sehen.,

Starting server at port 8080

Wenn alles gut aussieht, erstellen Sie als Nächstes einen Webserver.

Starten eines Webservers mit GET routes

In diesem Stadium erstellen wir einen Webserver, der tatsächlich auf Port 8080 bereitgestellt wird und auf eingehende GET-Anforderungen reagieren kann.

Ändern wir den Code in unserer main() Funktion, um einen Webserver an Port 8080 zu starten. DieListenAndServe – Methode wird von demhttp – Paket exportiert, das wir in Schritt eins importiert haben. Mit dieser Methode können wir den Webserver starten und den Port angeben, an dem eingehende Anforderungen überwacht werden sollen.,

Beachten Sie, dass der Port-Parameter als Zeichenfolge übergeben werden muss, die durch Doppelpunktpunktion vorangestellt wird. Der zweite Parameter akzeptiert einen Handler zum Konfigurieren des Servers für HTTP / 2. Dies ist jedoch für dieses Tutorial nicht wichtig, sodass wir nil als zweites Argument übergeben können.

 func main() { fmt.Printf("Starting server at port 8080\n") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) }}

Zu diesem Zeitpunkt kann der Server starten, weiß aber immer noch nicht, wie er mit Anforderungen umgehen soll. Wir müssen Handler an den Server übergeben, damit er weiß, wie er auf eingehende Anforderungen reagiert und welche Anforderungen akzeptiert werden sollen.,

Wir verwenden die Funktion HandleFunc, um dem Webserver Routenhandler hinzuzufügen. Das erste Argument akzeptiert den Pfad, auf den es achten muss . Hier weisen Sie den Server an, auf eingehende Anforderungen für zu warten. Das zweite Argument akzeptiert eine Funktion, die die Geschäftslogik enthält, um korrekt auf die Anforderung zu antworten.

Diese Funktion akzeptiert standardmäßig eine zum Zurücksenden einer Antwort und ein – Objekt, das weitere Informationen zur Anforderung selbst bereitstellt., Sie können beispielsweise auf Informationen zu den gesendeten Headern zugreifen, die für die Authentifizierung der Anforderung nützlich sein können.

Wie Sie sehen, sendet der Handler eine"Hello!” Nachricht, wenn wir diese Antwort an die.

Nun probieren wir dieses Setup aus. Starten Sie den Webserver mit go run server.go und besuchen Sie . Wenn der Server mit "Hello!" antwortet, können Sie mit dem nächsten Schritt fortfahren, in dem Sie lernen, wie Sie Ihren Golang-Webserverrouten grundlegende Sicherheit hinzufügen.,

Fügen Sie Routen grundlegende Sicherheit hinzu

Es versteht sich von selbst, dass Sicherheit wichtig ist. Lassen Sie uns einige grundlegende Strategien zur Verbesserung der Sicherheit Ihres Go-Webservers untersuchen.

Bevor wir dies tun, sollten wir uns einen Moment Zeit nehmen, um die Lesbarkeit unseres Codes zu erhöhen. Erstellen wir diehelloHandler – Funktion, die die gesamte Logik enthält, die sich auf die – Anforderung bezieht.

Dieser Handler verwendet das – Objekt, um zu überprüfen, ob der angeforderte Pfad korrekt ist. Dies ist ein sehr einfaches Beispiel dafür, wie Sie das Objekt verwenden können.,

Wenn der Pfad falsch ist, gibt der Server dem Benutzer einen StatusNotFound – Fehler zurück. Um einen Fehler an den Benutzer zu schreiben, können Sie die http.Error – Methode verwenden. Beachten Sie, dass der StatusNotFound – Code einem 404-Fehler entspricht. Alle Statuscodes finden Sie in der Golang Dokumentation.

Als nächstes fügen wir eine Prüfung zur Überprüfung des Anforderungstyps hinzu. Wenn die Methode nicht GET entspricht, gibt der Server einen neuen Fehler zurück. Wenn beide Prüfungen bestanden werden, gibt der Server seine Erfolgsantwort "Hello!"zurück.,

Als letztes müssen wir die handleFunc – Funktion in unserer main() – Funktion ändern, um die obige helloHandler – Funktion zu akzeptieren.

http.HandleFunc("/hello", helloHandler)

Unten ist der vollständige Code für Ihre Datei.

Als nächstes starten wir den Go-Webserver mit go run server.go. Sie können Ihre Sicherheit testen, indem Sie eine POST-Anfrage an mit einem Tool wie Postman oder cURL senden.

Starten Sie einen statischen Webserver

In diesem Schritt erstellen wir einen einfachen Dateiserver zum Hosten statischer Dateien., Dies wird eine sehr einfache Ergänzung zum Webserver sein.

Um sicherzustellen, dass Inhalte auf dem Webserver bereitgestellt werden, ändern wir die Datei index.html im Ordner static. Um die Dinge einfach zu halten, fügen Sie der Datei einfach eine Überschrift mit der Aufschrift „Static Websitehinzu.“Wenn Sie möchten, können Sie weitere Dateien oder Styling-Dateien hinzufügen, damit Ihr Webserver etwas schöner aussieht.

<html> <head> <title>Static Website</title> </head> <body> <h2>Static Website</h2> </body></html>

Um den Ordner static zu bedienen, müssen Sie zwei Codezeilen hinzufügen ., Die erste Codezeile erstellt das Dateiserverobjekt mit der Funktion FileServer. Diese Funktion akzeptiert einen Pfad vom Typ http.Dir. Daher müssen wir den String path "./static” in einen http.Dir Pfadtyp konvertieren.

Vergessen Sie nicht, die Route Handle anzugeben, die einen Pfad und den Dateiserver akzeptiert. Diese Funktion verhält sich wie die HandleFunc – Funktion mit einigen kleinen Unterschieden. Weitere Informationen zumFileServer – Objekt finden Sie in der Dokumentation.,

Es ist Zeit, den Code auszuprobieren. Starten Sie den Server mit go run server.go und besuchen Sie . Sie sollten den Header „Static Website“ sehen.

Akzeptieren Sie eine Formularübermittlungs-POST-Anfrage

Schließlich muss der Webserver auf eine Formularübermittlung antworten.

Fügen wir der form.html – Datei im Ordner static einige Inhalte hinzu. Beachten Sie, dass die Formularaktion an /formgesendet wird. Dies bedeutet, dass die POST-Anfrage aus dem Formular an gesendet wird., Das Formular selbst fragt nach Eingabe für zwei Variablen: name und address.

Der nächste Schritt besteht darin, den Handler zu erstellen, um die Anforderung /form zu akzeptieren. Die Datei form.html wird bereits über den Dateiserver bereitgestellt und kann über

First, the function has to call ParseForm() abgerufen werden, um die Rohabfrage zu analysieren und zu aktualisieren r.PostForm und r.Form. Dadurch können wir über die r.FormValue – Methode auf die Werte name und address zugreifen.,

Am Ende der Funktion schreiben wir beide Werte mit fmt.Fprintf in die .

Vergessen Sie nicht, die neue Formularhandler-Route zur Funktion main() hinzuzufügen.

http.HandleFunc("/form", formHandler)

Nun sieht der vollständige Code so aus.

Ausprobieren des Formularhandlers

Wir können das Formular testen, indem wir den Server mit go run server.go. Wenn der Server gestartet wird, besuchen Sie . Sie sollten zwei Eingabefelder und eine Schaltfläche zum Senden sehen.,

Wenn Sie das Formular ausgefüllt haben, klicken Sie auf die Schaltfläche submit. Der Server sollte Ihre POST-Anfrage verarbeiten und Ihnen das Ergebnis auf der Antwortseite anzeigen, z. B. die folgende Antwort.

Wenn Sie das obige Ergebnis sehen, haben Sie erfolgreich Ihren ersten Golang Web-und Dateiserver erstellt. Herzlichen Glückwunsch!

Wenn Sie Golang-Webserver weiter erforschen möchten, ist die Golang HTTP-Paketdokumentation voll von großartigen Beispielen., Dieses tutorial zum schreiben von web-apps in Go ist eine weitere großartige Ressource, die deckt die meisten Grundlagen.

LogRocket: Volle sichtbarkeit in ihre web apps

LogRocket ist eine frontend anwendung überwachung lösung, dass können sie replay probleme, als ob sie passiert in ihrem eigenen browser. Anstatt zu erraten, warum Fehler auftreten, oder Benutzer nach Screenshots und Protokoll-Dumps zu fragen, können Sie mit LogRocket die Sitzung wiederholen, um schnell zu verstehen, was schief gelaufen ist., Es funktioniert perfekt mit jeder App, unabhängig vom Framework, und verfügt über Plugins, um zusätzlichen Kontext von Redux, Vuex und @ngrx/store zu protokollieren.

Zusätzlich zur Protokollierung von Redux-Aktionen und-Status zeichnet LogRocket Konsolenprotokolle, JavaScript-Fehler, Stacktraces, Netzwerkanforderungen/ – antworten mit Headern + Körpern, Browser-Metadaten und benutzerdefinierte Protokolle auf. Es instrumentalisiert auch das DOM, um HTML und CSS auf der Seite aufzuzeichnen und pixelgenaue Videos selbst der komplexesten einseitigen Apps wiederherzustellen.

Probieren Sie es kostenlos aus.

Share

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.