Go Academy · Lektion

Routning och sökvägsparametrar

Registrera hanterare och tolka URL-parametrar

Lektion 2 av 413 steg

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
Gratis att börja

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

  1. Skapa en HTTP-server
  2. Routning och sökvägsparametrar
  3. Middleware-mönstret
  4. Graciös avstängning
← Tillbaka till Go Academy