Heim >Backend-Entwicklung >Golang >So ändern Sie das Routing in Golang

So ändern Sie das Routing in Golang

PHPz
PHPzOriginal
2023-04-14 10:31:21848Durchsuche

In Webanwendungen bezieht sich Routing auf die Codefragmente, die die Anwendung anhand der angeforderten URL lokalisieren. Es ist sehr einfach, das Routing in Golang zu ändern. In diesem Artikel wird erläutert, wie Sie mit Golang das Routing ändern, um Ihre eigene Webanwendung zu erstellen.

Um zu verstehen, wie man das Routing ändert, benötigen wir eine Codebasis für die Verarbeitung von HTTP-Anfragen. Hierzu kann das Paket net/http aus der Standardbibliothek verwendet werden. Wir müssen auch das Gorilla/Mux-Paket verwenden, das einen erweiterten Routing-Mechanismus bietet.

Zuerst müssen wir das Gorilla/Mux-Paket installieren. Installieren Sie mit dem folgenden Befehl:

go get -u github.com/gorilla/mux

Als Nächstes sehen wir uns ein Beispiel mit dem Gorilla/Mux-Paket an, das zwei Routen enthält:

package main
  
import (
    "encoding/json"
    "log"
    "net/http"
 
    "github.com/gorilla/mux"
)
 
type Product struct {
    ID    string  `json:"id"`
    Name  string  `json:"name"`
    Price float64 `json:"price"`
}
  
var products []Product
  
func getProducts(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(products)
}
  
func getProduct(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    params := mux.Vars(r)
    for _, item := range products {
        if item.ID == params["id"] {
            json.NewEncoder(w).Encode(item)
            return
        }
    }
    json.NewEncoder(w).Encode(&Product{})
}
  
func main() {
    router := mux.NewRouter()
 
    products = append(products, Product{ID: "1", Name: "Product 1", Price: 29.99})
    products = append(products, Product{ID: "2", Name: "Product 2", Price: 39.99})
    products = append(products, Product{ID: "3", Name: "Product 3", Price: 49.99})
 
    router.HandleFunc("/products", getProducts).Methods("GET")
    router.HandleFunc("/products/{id}", getProduct).Methods("GET")
 
    log.Fatal(http.ListenAndServe(":8000", router))
}

Im obigen Beispiel haben wir zwei Handlerfunktionen erstellt: getProducts und getProduct. Die erste Funktion ruft alle Produkte ab und sendet sie an den Kunden zurück. Die zweite Funktion ruft ein einzelnes Produkt ab, das anhand der ID gesucht werden kann. Wir definieren auch Routen für jede Handler-Funktion. Dies kann mit den Methoden router.HandleFunc und .Methods erfolgen.

Wir können sehen, dass es in der zweiten Route einen Parameter {id} gibt, der zur Übergabe der ID in der URL verwendet wird. Dieser Parameter wird von der URL über die Funktion mux.Vars abgerufen.

Schließlich definiert die Hauptfunktion den HTTP-Server und seinen Port, der das Gorilla/Mux-Paket zum Erstellen von Routen verwendet. Wenn wir die Anwendung ausführen, startet sie einen HTTP-Server und lauscht auf Port 8000.

Da wir nun unsere Route erstellt und die Handler-Funktion definiert haben, müssen wir nur noch die Funktionen http.HandleFunc und http.ListenAndServe verwenden, um Port 8000 auf alle Anfragen abzuhören.

Zusammenfassung

Anhand des obigen Beispiels können wir sehen, dass es sehr einfach ist, das Routing mit Golang zu ändern, und dass erweiterte Routing-Funktionen mit dem Gorilla/Mux-Paket bequemer implementiert werden können.

Mit ähnlichen Methoden können wir neue Routen hinzufügen oder bestehende Routen ändern. Dadurch können wir komplexe Webanwendungen schnell und ohne großen Programmier- oder Lernaufwand erstellen.

Wenn Sie also eine Webanwendung erstellen, empfehle ich die Verwendung von Golang und dem Gorilla/Mux-Paket, um das Routing zu ändern und HTTP-Anfragen zu verarbeiten.

Das obige ist der detaillierte Inhalt vonSo ändern Sie das Routing in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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