Routing i parametry ścieżek
Rejestrowanie handlerów i analizowanie parametrów URL
Routing i parametry ścieżek to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
Ograniczenia standardowego muxa
Domyślny http.ServeMux nie obsługuje parametrów ścieżki (np. /users/{id}) ani routingu na podstawie metody. Go 1.22 dodało rozszerzoną obsługę wzorców.
Rozszerzone wzorce w Go 1.22
Od wersji Go 1.22 ServeMux obsługuje prefiks metody i parametry ścieżki:
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") wyodrębnia nazwany segment ze wzorca adresu URL (Go 1.22+).
// Pattern: "GET /products/{category}/{id}"
category := r.PathValue("category")
id := r.PathValue("id")Ręczne parsowanie ścieżki
W Go < 1.22 lub w przypadku złożonych reguł wyodrębnij segmenty ścieżki za pomocą strings.Split(r.URL.Path, "/"):
parts := strings.Split(strings.Trim(r.URL.Path, "/"), "/")
// /users/42 → ["users", "42"]Routing na podstawie metody
Użyj instrukcji switch dla r.Method, aby obsłużyć logikę poszczególnych metod w jednym handlerze:
switch r.Method {
case http.MethodGet:
getHandler(w, r)
case http.MethodPost:
createHandler(w, r)
default:
w.WriteHeader(http.StatusMethodNotAllowed)
}Popularne routery innych firm
Biblioteki takie jak gorilla/mux, chi i httprouter zapewniają bardziej rozbudowany routing: ograniczenia oparte na wyrażeniach regularnych, nazwane grupy, łańcuchy middleware i podroutery.
Router chi
chi to lekki, idiomatyczny router zgodny z handlerami net/http:
r := chi.NewRouter()
r.Get("/users/{id}", getUser)
http.ListenAndServe(":8080", r)Parametry zapytania
Odczytaj parametry zapytania z r.URL.Query(), które zwraca mapę url.Values:
page := r.URL.Query().Get("page")
if page == "" { page = "1" }Symbole wieloznaczne i przechwytywanie całości
We wzorcach Go 1.22 {name...} jest symbolem wieloznacznym dopasowującym resztę ścieżki:
mux.HandleFunc("/static/{path...}", serveStatic)Zagnieżdżone trasy
Grupuj powiązane trasy za pomocą podrutera albo rejestrując handlery ze wspólnym prefiksem. chi's r.Route tworzy podruter dla prefiksu.
Przekierowanie końcowego ukośnika
http.ServeMux automatycznie przekierowuje /path/ do /path lub odwrotnie. Aby to wyłączyć, usuń końcowe ukośniki w middleware, zanim żądanie trafi do muxa.
Szybkie sprawdzenie
Jak w Go 1.22+ wyodrębnić segment {id} z dopasowanego wzorca adresu URL?
Podsumowanie: routing i parametry ścieżki
Najważniejsze informacje:
- Go 1.22: prefiks metody + parametry ścieżki {name} w ServeMux
- r.PathValue("name") wyodrębnia nazwane segmenty
- Instrukcja switch dla r.Method do obsługi logiki poszczególnych metod
- Routery innych firm (chi, gorilla/mux) do złożonego routingu
Często zadawane pytania
Czy lekcja „Routing i parametry ścieżek” jest bezpłatna?
Tak — pełny tekst „Routing i parametry ścieżek” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Routing i parametry ścieżek”?
Rejestrowanie handlerów i analizowanie parametrów URL Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Routing i parametry ścieżek”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tworzenie serwera HTTP
- Routing i parametry ścieżek
- Wzorzec middleware
- Kontrolowane zamykanie