Перейти к содержимому

Без middleware по умолчанию

Gin предлагает два способа создания маршрутизатора, и разница заключается в том, какие middleware подключены по умолчанию.

gin.Default() — с Logger и Recovery

gin.Default() создаёт маршрутизатор с двумя уже подключёнными middleware:

  • Logger — Записывает логи запросов в stdout (метод, путь, код статуса, задержка).
  • Recovery — Восстанавливается после любых паник в обработчиках и возвращает ответ 500, предотвращая падение сервера.

Это наиболее распространённый выбор для быстрого старта.

gin.New() — чистый движок

gin.New() создаёт полностью чистый маршрутизатор без подключённых middleware. Это полезно, когда вам нужен полный контроль над тем, какие middleware выполняются, например:

  • Вы хотите использовать структурированный логгер (такой как slog или zerolog) вместо стандартного текстового логгера.
  • Вы хотите настроить поведение восстановления после паник.
  • Вы создаёте микросервис, где нужен минимальный или специализированный набор middleware.

Пример

package main
import (
"log"
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
// Create a blank engine with no middleware.
r := gin.New()
// Attach only the middleware you need.
r.Use(gin.Recovery())
r.GET("/ping", func(c *gin.Context) {
c.String(http.StatusOK, "pong")
})
log.Fatal(r.Run(":8080"))
}

В примере выше middleware Recovery подключён для предотвращения падений, но стандартный middleware Logger опущен. Вы можете заменить его своим собственным middleware логирования или полностью его убрать.