Маршрутизация и параметры пути
Регистрация обработчиков и разбор параметров URL
«Маршрутизация и параметры пути» — бесплатный урок Go Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Ограничения стандартного мультиплексора
Стандартный http.ServeMux не поддерживает параметры пути (например, /users/{id}) и маршрутизацию по методам. В Go 1.22 появилась расширенная поддержка шаблонов.
Расширенные шаблоны в Go 1.22
Начиная с Go 1.22, ServeMux поддерживает префикс метода и параметры пути:
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") извлекает именованный сегмент из шаблона URL (Go 1.22 и новее).
// Pattern: "GET /products/{category}/{id}"
category := r.PathValue("category")
id := r.PathValue("id")Разбор пути вручную
Для Go < 1.22 или сложных правил извлекайте сегменты пути с помощью strings.Split(r.URL.Path, "/"):
parts := strings.Split(strings.Trim(r.URL.Path, "/"), "/")
// /users/42 → ["users", "42"]Маршрутизация по методам
Используйте оператор switch для r.Method, чтобы реализовать логику отдельных методов в одном обработчике:
switch r.Method {
case http.MethodGet:
getHandler(w, r)
case http.MethodPost:
createHandler(w, r)
default:
w.WriteHeader(http.StatusMethodNotAllowed)
}Популярные сторонние маршрутизаторы
Библиотеки gorilla/mux, chi и httprouter предоставляют более широкие возможности маршрутизации: ограничения с регулярными выражениями, именованные группы, цепочки промежуточных обработчиков и вложенные маршрутизаторы.
Маршрутизатор chi
chi — лёгкий идиоматичный маршрутизатор, совместимый с обработчиками net/http:
r := chi.NewRouter()
r.Get("/users/{id}", getUser)
http.ListenAndServe(":8080", r)Параметры запроса
Читайте параметры запроса из r.URL.Query(), который возвращает карту url.Values:
page := r.URL.Query().Get("page")
if page == "" { page = "1" }Подстановочный символ и захват остатка пути
В шаблонах Go 1.22 {name...} — это подстановочный символ, соответствующий остатку пути:
mux.HandleFunc("/static/{path...}", serveStatic)Вложенные маршруты
Группируйте связанные маршруты с помощью вложенного маршрутизатора или регистрируя обработчики с общим префиксом. r.Route в chi создаёт вложенный маршрутизатор для префикса.
Перенаправление из-за завершающего слеша
http.ServeMux автоматически перенаправляет /path/ на /path или наоборот. Чтобы отключить это поведение, удаляйте завершающие слеши в промежуточном обработчике до передачи запроса мультиплексору.
Быстрая проверка
Как в Go 1.22 и новее извлечь сегмент {id} из совпавшего шаблона URL?
Итоги: маршрутизация и параметры пути
Ключевые моменты:
- Go 1.22: префикс метода + параметры пути {name} в ServeMux
- r.PathValue("name") извлекает именованные сегменты
- Переключатель методов для логики отдельных методов
- Сторонние маршрутизаторы (chi, gorilla/mux) для сложной маршрутизации
Часто задаваемые вопросы
Урок «Маршрутизация и параметры пути» бесплатный?
Да — полный текст урока «Маршрутизация и параметры пути» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Маршрутизация и параметры пути»?
Регистрация обработчиков и разбор параметров URL Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Маршрутизация и параметры пути»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Создание HTTP-сервера
- Маршрутизация и параметры пути
- Шаблон промежуточного обработчика
- Корректное завершение работы