So implementieren Sie die Routengruppierung in der Go-Sprache

WBOY
Freigeben: 2023-12-17 23:09:57
Original
812 Leute haben es durchsucht

So implementieren Sie die Routengruppierung in der Go-Sprache

Go-Sprache ist eine einfache und effiziente Programmiersprache, die auch im Bereich der Webentwicklung weit verbreitet ist. In der Webentwicklung ist Routing ein wesentlicher Bestandteil. Die Routing-Gruppierung ist eine erweiterte Routing-Funktion, die den Code klarer und prägnanter machen und die Lesbarkeit und Wartbarkeit des Codes verbessern kann.

In diesem Artikel wird detailliert beschrieben, wie die Routing-Gruppierung in der Go-Sprache sowohl unter prinzipiellen als auch unter Code-Implementierungsaspekten implementiert wird.

1. Das Prinzip der Gruppierung

Routengruppierung entspricht der Gruppierung einiger Routen mit ähnlichen Eigenschaften für die Verwaltung. Beispielsweise können wir alle API-Routen in einer API-Gruppe und alle Hintergrundverwaltungsrouten in einer Admin-Gruppe gruppieren.

Bei der Implementierung der Routing-Gruppierung müssen wir zunächst eine Routing-Gruppierungsstruktur definieren, wie unten gezeigt:

Typ RouteGroup struct {

pathPrefix string
router     *mux.Router
Nach dem Login kopieren
Nach dem Login kopieren

}

wobei pathPrefix das Präfix der Routing-Gruppierung darstellt und router die Router-Instanz ist.

Als nächstes können wir einige Methoden in der RouteGroup-Struktur definieren, wie z. B. Get(), Post(), Put(), Delete() usw. Die Funktion dieser Methoden besteht darin, Verarbeitungsfunktionen zur angegebenen Route hinzuzufügen, z unten gezeigt:

func (rg *RouteGroup) Get(path string, handler http.HandlerFunc) {

rg.router.HandleFunc(rg.pathPrefix+path, handler).Methods("GET")
Nach dem Login kopieren

}

func (rg *RouteGroup) Post(path string, handler http.HandlerFunc) {

rg.router.HandlerFunc(rg.pathPrefix+path, handler).Methods("POST")
Nach dem Login kopieren

}

.. .

Verwenden Sie in der Routengruppierung Get(), Post(), Put(), Delete() und andere Methoden, um Verarbeitungsfunktionen zur angegebenen Route hinzuzufügen, wie unten gezeigt:

apiHandler := func( w http .ResponseWriter, r *http.Request) {

fmt.Fprintln(w, "This is API handler!")
Nach dem Login kopieren

}
AdminHandler := func(w http.ResponseWriter, r *http.Request) {

fmt.Fprintln(w, "This is Admin handler!")
Nach dem Login kopieren

}

// Router erstellen
r := mux. NewRouter( )

// API-Routinggruppe erstellen
apiGroup := &RouteGroup{pathPrefix: "/api", router: r}
apiGroup.Get("/articles", apiHandler)
apiGroup.Post("/articles", apiHandler)

// Erstellen Sie eine Routinggruppe für die Hintergrundverwaltung
adminGroup := &RouteGroup{pathPrefix: "/admin", router: r}
adminGroup.Get("/articles", AdminHandler)
adminGroup.Post("/articles" , AdminHandler)

Mit dem obigen Code haben wir erfolgreich zwei Routing-Gruppen erstellt, nämlich die API-Routing-Gruppe und die Hintergrundverwaltungs-Routing-Gruppe.

2. Code-Implementierung

Als nächstes werden wir anhand eines vollständigen Codebeispiels demonstrieren, wie die Routengruppierung in der Go-Sprache implementiert wird.

Zuerst müssen wir Router Mux installieren, der über den folgenden Befehl installiert werden kann:

go get -u github.com/gorilla/mux

Der folgende Code zeigt, wie man Router und Routinggruppen über Mux erstellt:

package main

import (

"net/http"

"github.com/gorilla/mux"
Nach dem Login kopieren

)

func main() {

r := mux.NewRouter()

// 创建API路由分组
apiGroup := &RouteGroup{pathPrefix: "/api", router: r.PathPrefix("/api").Subrouter()}
apiGroup.Get("/articles", apiHandler)
apiGroup.Post("/articles", apiHandler)

// 创建后台管理路由分组
adminGroup := &RouteGroup{pathPrefix: "/admin", router: r.PathPrefix("/admin").Subrouter()}
adminGroup.Get("/articles", AdminHandler)
adminGroup.Post("/articles", AdminHandler)

http.ListenAndServe(":8080", r)
Nach dem Login kopieren
Nach dem Login kopieren

}

Im obigen Code haben wir zwei Routinggruppen (apiGroup und adminGroup) über die PathPrefix()-Methode erstellt und dann Subrouter verwendet ()-Methode fügt sie dem Router r hinzu.

Als nächstes müssen wir die Methoden Get(), Post() und Put() im RouteGroup-Typ implementieren, um Verarbeitungsfunktionen für die angegebene Route hinzuzufügen. Der vollständige Code lautet wie folgt:

package main

import (

"fmt"
"net/http"

"github.com/gorilla/mux"
Nach dem Login kopieren

)

type RouteGroup struct {

pathPrefix string
router     *mux.Router
Nach dem Login kopieren
Nach dem Login kopieren

}

func (rg *RouteGroup) Get(path string, handler http.HandlerFunc) {

rg.router.HandleFunc(fmt.Sprintf("%s/%s", rg.pathPrefix, path), handler).Methods(http.MethodGet)
Nach dem Login kopieren

}

func (rg *RouteGroup) Post(Pfadzeichenfolge, Handler http.HandlerFunc) {

rg.router.HandleFunc(fmt.Sprintf("%s/%s", rg.pathPrefix, path), handler).Methods(http.MethodPost)
Nach dem Login kopieren

}

func (rg *RouteGroup) Put(Pfadzeichenfolge, Handler http.HandlerFunc) {

rg.router.HandleFunc(fmt.Sprintf("%s/%s", rg.pathPrefix, path), handler).Methods(http.MethodPut)
Nach dem Login kopieren

}

func apiHandler(w http.ResponseWriter, r *http.Request) {

fmt.Fprintf(w, "This is API handler!")
Nach dem Login kopieren

}

func AdminHandler(w http.ResponseWriter, r *http.Request) {

fmt.Fprintf(w, "This is Admin handler!")
Nach dem Login kopieren

}

func main() {

r := mux.NewRouter()

// 创建API路由分组
apiGroup := &RouteGroup{pathPrefix: "/api", router: r.PathPrefix("/api").Subrouter()}
apiGroup.Get("/articles", apiHandler)
apiGroup.Post("/articles", apiHandler)

// 创建后台管理路由分组
adminGroup := &RouteGroup{pathPrefix: "/admin", router: r.PathPrefix("/admin").Subrouter()}
adminGroup.Get("/articles", AdminHandler)
adminGroup.Post("/articles", AdminHandler)

http.ListenAndServe(":8080", r)
Nach dem Login kopieren
Nach dem Login kopieren

}

Durch die obige Code-Implementierung haben wir erfolgreich die Routengruppierung erstellt und die Verarbeitungsfunktion für jede Route angegeben.

Zusammenfassung:

In diesem Artikel wird erläutert, wie die Routengruppierung in der Go-Sprache implementiert wird. Wir haben zunächst über das Prinzip der Routengruppierung gesprochen, das heißt, durch benutzerdefinierte Strukturen und Methoden wird einer Gruppe von Routen dieselbe Verarbeitungsfunktion zugewiesen über einen Router Realisieren Sie die Verwaltung aller Routing-Gruppen. Als nächstes demonstrierten wir ausführlich, wie man Mux zum Implementieren der Routengruppierung verwendet, und gaben ein vollständiges Codebeispiel. Ich hoffe, dass dieser Artikel den Lesern helfen kann, die Implementierung der Routing-Gruppierung in der Go-Sprache besser zu verstehen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Routengruppierung in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage