gorilla/mux годами был стандартным выбором для HTTP-роутинга в Go. Он добавлял параметры пути, роутинг по методам и поддержку middleware поверх скромного ServeMux. Но Go 1.22 закрыл большинство этих пробелов.Что изменилось в Go 1.22
Стандартный
ServeMux теперь поддерживает методы и параметры пути прямо в паттерне маршрута:mux := http.NewServeMux()
mux.HandleFunc("GET /deposits/{walletID}", handleGetDeposit)
mux.HandleFunc("POST /deposits", handleCreateDeposit)
mux.HandleFunc("DELETE /deposits/{walletID}", handleDeleteDeposit)
Параметр пути читается через
r.PathValue("walletID"). Роутинг по методу встроен. Для большинства REST API, внутренних сервисов и обработчиков вебхуков этого достаточно.Когда нужна внешняя библиотека
Если реально нужны сложные цепочки middleware, субрутеры или маршруты с регулярными выражениями — возьмите
github.com/go-chi/chi/v5. Он легче Gorilla, хорошо компонуется и следует идиомам Go.Почему не Gorilla
Gorilla Mux поддерживается, но его дни как разумного дефолта прошли. Вы добавляете зависимость ради функций, которые теперь есть в стандартной библиотеке.
Для нового проекта на Go 1.22+: начните с
net/http. Если не хватает — возьмите chi. Gorilla Mux нужен только в очень специфических случаях или при поддержке старого кода.📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoToProduction