Study
Gin

Graceful Shutdown

Penjelasan

Karena Gin dibangun di atas net/http standar (tidak seperti Fiber yang pakai fasthttp), graceful shutdown Gin memakai http.Server STANDAR Go langsung, dengan r.Handler() sebagai handler-nya — pola ini sama dengan graceful shutdown aplikasi Go net/http pada umumnya, bukan API khusus Gin.

Contoh Konsep

srv := &http.Server{
	Addr:    ":8080",
	Handler: r, // *gin.Engine memenuhi interface http.Handler
}

go func() {
	if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
		log.Fatal(err)
	}
}()

quit := make(chan os.Signal, 1)
signal.Notify(quit, os.Interrupt)
<-quit

ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
srv.Shutdown(ctx)

Praktikum

Jelaskan (sebagai catatan) kenapa graceful shutdown Gin memakai http.Server standar langsung, BUKAN method khusus seperti r.Shutdown(), berbeda dari Echo (e.Shutdown()) atau Fiber (app.ShutdownWithTimeout()).

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

*gin.Engine (hasil gin.Default()/gin.New()) MEMENUHI interface http.Handler standar Go — inilah alasan kenapa Gin bisa langsung dipasangkan ke http.Server biasa tanpa API graceful shutdown khusus, konsekuensi langsung dari desain Gin yang dibangun di atas net/http, bukan abstraksi terpisah seperti Fiber.