0Pricing
Go Academy · Lekcja

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

  1. Tworzenie serwera HTTP
  2. Routing i parametry ścieżek
  3. Wzorzec middleware
  4. Kontrolowane zamykanie
← Powrót do Go Academy