0Pricing
Go Academy · Урок

Маршрутизация и параметры пути

Регистрация обработчиков и разбор параметров 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 — локальная установка не требуется.

Все уроки этого курса

  1. Создание HTTP-сервера
  2. Маршрутизация и параметры пути
  3. Шаблон промежуточного обработчика
  4. Корректное завершение работы
← Назад к Go Academy