بدون میانافزار به صورت پیشفرض
Gin دو روش برای ایجاد موتور روتر ارائه میدهد و تفاوت آنها در میانافزارهای متصل شده به صورت پیشفرض است.
gin.Default() — با Logger و Recovery
gin.Default() یک روتر با دو میانافزار از قبل متصل شده ایجاد میکند:
- Logger — لاگ درخواستها را به stdout مینویسد (متد، مسیر، کد وضعیت، تأخیر).
- Recovery — از panicها در handlerها بازیابی کرده و پاسخ 500 برمیگرداند و از خراب شدن سرور جلوگیری میکند.
این رایجترین انتخاب برای شروع سریع است.
gin.New() — یک موتور خام
gin.New() یک روتر کاملاً خام بدون هیچ میانافزاری ایجاد میکند. این زمانی مفید است که میخواهید کنترل کامل بر اینکه کدام میانافزار اجرا شود داشته باشید، به عنوان مثال:
- میخواهید از یک لاگر ساختاریافته (مانند
slogیاzerolog) به جای لاگر متنی پیشفرض استفاده کنید. - میخواهید رفتار بازیابی panic را سفارشی کنید.
- در حال ساخت میکروسرویسی هستید که نیاز به پشته میانافزار حداقلی یا تخصصی دارد.
مثال
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"))}در مثال بالا، میانافزار Recovery برای جلوگیری از خرابی گنجانده شده است، اما میانافزار Logger پیشفرض حذف شده است. میتوانید آن را با میانافزار لاگگذاری خود جایگزین کنید یا کاملاً حذف کنید.