Routning och sökvägsparametrar
Registrera hanterare och tolka URL-parametrar
Routning och sökvägsparametrar är en gratis lektion i Go Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Go Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Go Academy innehåller totalt 4 lektioner.
Begränsningar hos standard-muxen
Standardinstansen av http.ServeMux stöder inte sökvägsparametrar (t.ex. /users/{id}) eller routing baserad på metod. Go 1.22 lade till utökat stöd för mönster.
Utökade mönster i Go 1.22
Från och med Go 1.22 stöder ServeMux metodprefix och sökvägsparametrar:
mux.HandleFunc("GET /users/{id}", func(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("id")
fmt.Fprintln(w, "user:", id)
})r.PathValue
r.PathValue("name") extraherar ett namngivet segment från URL-mönstret (Go 1.22+).
// Pattern: "GET /products/{category}/{id}"
category := r.PathValue("category")
id := r.PathValue("id")Manuell tolkning av sökvägar
För Go < 1.22 eller komplexa regler kan du extrahera sökvägssegment med strings.Split(r.URL.Path, "/"):
parts := strings.Split(strings.Trim(r.URL.Path, "/"), "/")
// /users/42 → ["users", "42"]Routing baserad på metod
Använd en switch på r.Method för logik per metod i en enda handler:
switch r.Method {
case http.MethodGet:
getHandler(w, r)
case http.MethodPost:
createHandler(w, r)
default:
w.WriteHeader(http.StatusMethodNotAllowed)
}Populära routrar från tredje part
Bibliotek som gorilla/mux, chi och httprouter erbjuder mer avancerad routing: reguljära uttryck, namngivna grupper, middleware-kedjor och subrouters.
chi-router
chi är en lättviktig, idiomatisk router som är kompatibel med net/http-handlers:
r := chi.NewRouter()
r.Get("/users/{id}", getUser)
http.ListenAndServe(":8080", r)Frågeparametrar
Läs frågeparametrar från r.URL.Query(), som returnerar en map av typen url.Values:
page := r.URL.Query().Get("page")
if page == "" { page = "1" }Jokertecken och catch-all
I Go 1.22-mönster är {name...} ett jokertecken som matchar resten av sökvägen:
mux.HandleFunc("/static/{path...}", serveStatic)Nästlade routes
Gruppera relaterade routes med en subrouter eller genom att registrera handlers med ett gemensamt prefix. chi:s r.Route skapar en subrouter för ett prefix.
Omdirigering av avslutande snedstreck
http.ServeMux omdirigerar automatiskt /path/ till /path eller tvärtom. Om du vill inaktivera detta tar du bort avslutande snedstreck i en middleware innan muxen tar emot requesten.
Snabbkontroll
Hur extraherar du segmentet {id} från ett matchat URL-mönster i Go 1.22+?
Sammanfattning: routing och sökvägsparametrar
Viktiga punkter:
- Go 1.22: metodprefix + sökvägsparametrar med {name} i ServeMux
- r.PathValue("name") extraherar namngivna segment
- Switch på metod för logik per metod
- Routrar från tredje part (chi, gorilla/mux) för komplex routing
Lär dig Go med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 51
- Lektioner
- 203
Vanliga frågor
Är lektionen ”Routning och sökvägsparametrar” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Go Academy, inklusive ”Routning och sökvägsparametrar”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Go Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Routning och sökvägsparametrar”?
Registrera hanterare och tolka URL-parametrar Ni övar på Go Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Go Academy?
Du behöver inga förkunskaper. Utbildningen i Go Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Routning och sökvägsparametrar”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Go Academy-lektionen?
Ja. Varje Go Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Skapa en HTTP-server
- Routning och sökvägsparametrar
- Middleware-mönstret
- Graciös avstängning