Context: c.Set() & c.Get()
Penjelasan
c.Set("key", value) menyimpan data custom selama SATU request berjalan, dibaca kembali lewat c.Get("key") — penamaan method dan pola pemakaiannya SAMA PERSIS dengan Echo (c.Set()/c.Get() terpisah), beda dari Fiber yang menggabungkan keduanya jadi satu method c.Locals().
Contoh Konsep
func AuthMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
user := "Budi" // anggap sudah diverifikasi dari token
c.Set("user", user)
c.Next()
}
}
r.GET("/profil", AuthMiddleware(), func(c *gin.Context) {
user, _ := c.Get("user") // Get() mengembalikan (value, ada/tidak)
c.String(200, fmt.Sprintf("Halo, %s!", user))
})
Praktikum
Buat middleware yang men-c.Set("requestId", suatu string unik). Buat handler yang membaca kembali lewat c.Get("requestId") dan menampilkannya di response.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
c.Get("key") mengembalikan DUA nilai (value bertipe interface{}, dan bool apakah key-nya ada) — beda dari c.Locals() Fiber yang mengembalikan interface{} langsung tanpa indikator ada/tidak, pola dua-nilai Gin ini lebih AMAN karena tidak akan panic walau key-nya belum pernah di-Set().