بدون وسيطات افتراضية
يوفر Gin طريقتين لإنشاء محرك الموجّه، والفرق يعود إلى الوسيطات المُرفقة افتراضياً.
gin.Default() — مع Logger و Recovery
يُنشئ gin.Default() موجّهاً بوسيطتين مُرفقتين بالفعل:
- Logger — يكتب سجلات الطلبات إلى الإخراج القياسي (الطريقة، المسار، رمز الحالة، التأخير).
- Recovery — يستعيد من أي حالات ذعر في المعالجات ويُرجع استجابة 500، مما يمنع خادمك من الانهيار.
هذا هو الخيار الأكثر شيوعاً للبدء بسرعة.
gin.New() — محرك فارغ
يُنشئ gin.New() موجّهاً فارغاً تماماً بدون أي وسيطات مُرفقة. هذا مفيد عندما تريد التحكم الكامل في الوسيطات التي تعمل، على سبيل المثال:
- تريد استخدام مسجّل منظم (مثل
slogأوzerolog) بدلاً من المسجّل النصي الافتراضي. - تريد تخصيص سلوك استرداد الذعر.
- تبني خدمة مصغّرة حيث تحتاج إلى حزمة وسيطات بسيطة أو متخصصة.
مثال
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 الافتراضي محذوف. يمكنك استبداله بوسيط تسجيل خاص بك أو حذفه تماماً.