Без 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 логирования или полностью его убрать.