Маршрутизатор Gin и группы маршрутов
Настройка движка, групп и параметров пути
«Маршрутизатор Gin и группы маршрутов» — бесплатный урок Go Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Что такое Gin?
Gin — это высокопроизводительный HTTP-фреймворк для Go. Он использует маршрутизатор на основе дерева radix, поддерживает промежуточное ПО, привязку JSON и валидацию, что делает его популярным выбором для REST API.
Установка и базовая настройка
Импортируйте Gin и создайте движок:
go get github.com/gin-gonic/gin
package main
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "pong"})
})
r.Run(":8080")
}gin.Default и gin.New
gin.Default() включает промежуточное ПО Logger и Recovery. gin.New() создаёт движок без промежуточного ПО — используйте его, если хотите полностью управлять промежуточным ПО самостоятельно.
Методы маршрутов
Зарегистрируйте маршруты для методов HTTP: GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD и Any:
r.GET("/users", listUsers)
r.POST("/users", createUser)
r.PUT("/users/:id", updateUser)
r.DELETE("/users/:id", deleteUser)Параметры пути
Извлекайте параметры пути с помощью c.Param("name"):
r.GET("/users/:id", func(c *gin.Context) {
id := c.Param("id")
c.JSON(200, gin.H{"id": id})
})Параметры запроса
Читайте параметры запроса с помощью c.Query и c.DefaultQuery:
page := c.DefaultQuery("page", "1")
limit := c.Query("limit") // "" if absentГруппы маршрутов
Объединяйте связанные маршруты под общим префиксом с помощью r.Group. Промежуточное ПО, применённое к группе, влияет на все входящие в неё маршруты:
api := r.Group("/api/v1")
{
api.GET("/users", listUsers)
api.POST("/users", createUser)
api.PUT("/users/:id", updateUser)
}Вложенные группы
Группы можно вкладывать друг в друга для более точной организации:
admin := r.Group("/admin")
admin.Use(AdminAuth())
{
admin.GET("/stats", getStats)
admin.DELETE("/users/:id", deleteUser)
}Маршрут не найден или метод не разрешён
Корректно обрабатывайте ошибки 404 и 405 с помощью r.NoRoute и r.NoMethod:
r.NoRoute(func(c *gin.Context) {
c.JSON(404, gin.H{"error": "not found"})
})Статические файлы
Раздавайте статические файлы из каталога:
r.Static("/static", "./public")
r.StaticFile("/favicon.ico", "./favicon.ico")Движок как http.Handler
*gin.Engine в Gin реализует http.Handler, поэтому его можно использовать с собственным http.Server для настройки времени ожидания:
srv := &http.Server{Addr: ":8080", Handler: r, ReadTimeout: 5*time.Second}
srv.ListenAndServe()Быстрая проверка
В чём преимущество использования групп маршрутов в Gin?
Повторение: маршрутизатор и группы Gin
Ключевые моменты:
- gin.Default() включает Logger и Recovery; используйте gin.New() для собственной настройки
- c.Param — для параметров пути, c.Query — для параметров запроса
- r.Group("/prefix") — для общего префикса и промежуточного ПО
- Gin реализует http.Handler — используйте его с собственным http.Server
Часто задаваемые вопросы
Урок «Маршрутизатор Gin и группы маршрутов» бесплатный?
Да — полный текст урока «Маршрутизатор Gin и группы маршрутов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Маршрутизатор Gin и группы маршрутов»?
Настройка движка, групп и параметров пути Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Маршрутизатор Gin и группы маршрутов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Маршрутизатор Gin и группы маршрутов
- Привязка и проверка запросов
- Вспомогательные средства ответов и коды состояния
- Промежуточные обработчики Gin: аутентификация и журналирование