Go ist eine leistungsstarke und flexible Sprache zum Erstellen von Webanwendungen. Der Netz Paket spielt eine wesentliche Rolle im Ökosystem von Go.
Wie die meisten serverseitigen Programmiersprachen wird Go mit einem HTTP-Paket für die Interaktion mit dem HTTP-Protokoll ausgeliefert. Das relevante Go-Paket ist die http Paket, ein Unterpaket des Netz Paket.
Was ist das net/http-Paket?
Der net/http Paket ist eine der Standardbibliotheken in Go. Es bietet einen vollständigen Satz von Funktionen und Typen zum Erstellen von HTTP-Clients, -Servern und anderen HTTP-basierten Operationen. Diese beinhalten:
- Funktionen zum Erstellen von HTTP-Anforderungen.
- Bearbeitung von Anfragen und Antworten.
- HTTP-Anfragen bedienen.
- Verwandte Objekte wie Header und Cookies.
Der net/http Das Paket unterstützt auch TLS/SSL-Verschlüsselung, HTTP/2 und andere erweiterte Funktionen, die das Paket zu einem unverzichtbaren Werkzeug für Go-Entwickler machen.
Viele beliebte Go-Bibliotheken und -Frameworks, vom Gorilla-Web-Toolkit bis zum Echo-Web-Framework, bauen auf dem auf net/http Paket.
Starten eines einfachen HTTP-Servers
Das Starten von Servern ist eine der grundlegenden Operationen, die Sie verstehen müssen, um mit dem HTTP-Protokoll zu arbeiten.
Hier ist ein Programm dazu Betreiben Sie einen einfachen Server in Go:
Paket hauptsächlich
importieren (
"fmt"
"net/http"
)// Handler ist ein typischer HTTP-Request-Response-Handler in Go; Details später
FunkHandler(mit http. ResponseWriter, r *http. Anfrage) {
// Fprintf formatiert den String zu einem Writer
fmt. Fprintf (w, "Hallo Welt!")
}
Funkhauptsächlich() {
http. HandleFunc("/", Hundeführer)
http. ListenAndServe(":8080", Null)
}
Der Handler -Funktion ist ein typischer Request-Response-Handler für die http Paket. Diese Funktion schreibt den String "Hello, World!" an den HTTP-Response-Writer.
Beim Ausführen des Codes und beim Besuch http://localhost: 8080/ In einem Webbrowser sollten Sie die Meldung „Hello, World!“ sehen. Zeichenfolge, die in Ihrem Browser angezeigt wird.
Bearbeitung von Anfragen und Antworten
Sie können eingehende Anfragen mit bearbeiten HandleFunc Methode der http Paket. Der HandleFunc -Methode nimmt eine Routenzeichenfolge und eine Handler-Funktion auf.
Der http. Anfrage Methode ist eine Instanz der eingehenden Anfrage, und Sie können die zahlreichen Methoden Ihrer Instanz verwenden, um mit den Anfragen an die Route zu interagieren.
http. HandleFunc("/Benutzer", Funk(mit http. ResponseWriter, r *http. Anfrage) {
schalten R. Methode {
Fall"ERHALTEN":
// GET-Anfrage verarbeiten
Fall"POST":
// POST-Anfrage bearbeiten
Standard:
http. Fehler (w, "Ungültige Anfragemethode", http. StatusMethodNotAllowed)
}
})
Der obige Code verwendet die http Paket, um eine HTTP-Handler-Funktion für die zu definieren /users Route. Die Handler-Funktion lauscht auf der Route auf eingehende HTTP-Anforderungen und verarbeitet sie basierend auf der Anforderungsmethode (z. B. ERHALTEN, POST, usw.)
Die Handler-Funktion übernimmt die ResponseWriter Und Anfrage Methoden als Argumente. Der ResponseWriter ist eine Schnittstelle, die dem Handler hilft, Daten als Antwort an den Client zu schreiben, und die Anfrage ist eine Struktur, die Informationen über die eingehende Anfrage enthält, z. B. HTTP-Methode, URL, Header usw.
Die obige Handler-Funktion verwendet a schalten -Anweisung, um die Anforderungsmethode zu bestimmen und verschiedene Codeblöcke basierend auf der Methode auszuführen. Wenn die Methode ist ERHALTEN, der Handler wird die behandeln ERHALTEN Anfrage. Ansonsten ist die Methode POST; es wird die behandeln POST Anfrage.
Wenn die Methode etwas anderes ist, wird eine gesendet http. Fehler mit der Meldung „Ungültige Anforderungsmethode“ und a StatusMethodNotAllowedHTTP-Statuscode an den Client.
Sie können mit dem Strings an den Client zurückschreiben Schreiben -Methode Ihrer Writer-Instanz, die einen Byte-Slice von Strings aufnimmt und den String schreibt.
w. Schreiben([]Byte("Hallo Welt!"))
Du kannst den... benutzen WriteHeader Methode von dir ResponseWriter Instanz zum Schreiben von Headern an den Client.
w. WriteHeader (http. StatusOK)
Arbeiten mit HTTP-Middleware
Middleware besteht aus Funktionen, die eingehende HTTP-Anforderungen für Operationen abfangen, bevor die Anforderung an die nächste Handler-Funktion weitergeleitet wird.
Hier ist ein Beispiel für die Protokollierung der Middleware-Handler-Funktion in Go:
FunkLoggingMiddleware(nächster http. Handler)http.Handler {
zurückkehren http. HandlerFunc(Funk(mit http. ResponseWriter, r *http. Anfrage) {
// Anfrage protokollieren
nächste. ServeHTTP(w, r)
// Antwort protokollieren
})
}
Der LoggingMiddleware Die Funktion übernimmt einen HTTP-Handler und gibt einen neuen HTTP-Handler zurück. Der zurückgegebene HTTP-Handler ist eine anonyme Funktion, die einen HTTP-Antwortschreiber und eine HTTP-Anforderung annimmt. Die Funktion protokolliert die Anforderung und ruft die auf ServeHTTP Methode auf der nächste HTTP-Handler, der den Response Writer und die Anfrage als Argumente übergibt.
Mit dem können Sie Middleware-Funktionen handhaben Handhaben Methode der http Paket. Der Handhaben Methode übernimmt die Route und die Middleware-Funktion.
http. Handhaben("/", LoggingMiddleware (http. HandlerFunc (Handler)))
Weiterleitungen mit dem HTTP-Paket
Die Umleitung ist ein beliebter Vorgang für Webanwendungen, die Benutzer auf andere Ressourcen oder Webseiten verweisen.
Sie können mithilfe von auf eine andere Webseite umleiten Umleiten Methode der http Paket.
http. Umleitung (w, r, " http://example.com", http. StatusMovedPermanently)
Der Umleiten Methode nimmt in der ResponseWriter Und Anfrage Instanzen, die neue Seiten-URL und einen Statuscode für die Weiterleitung.
Sie können komplexe APIs in Go erstellen
Der http package ist ein leistungsstarkes und flexibles Tool zum Erstellen komplexer APIs. Sie können die reichhaltige Standardbibliothek von Go und andere leistungsstarke verwenden Pakete von Drittanbietern zum Hinzufügen von Funktionen zu Ihren APIs, z. B. Datenbankkonnektivität und Unterstützung für verschiedene Web Rahmen.
Mit Go können Sie skalierbare, hochleistungsfähige APIs erstellen, die einen erheblichen Anfrageverkehr und komplexe Datenverarbeitungsaufgaben problemlos bewältigen.