Response Methods: c.JSON() & gin.H
Penjelasan
c.JSON(status, data) mengirim response JSON, argumen pertama status code (angka biasa, mis. 200, BUKAN konstanta seperti Echo/Fiber, walau Gin juga menyediakan konstanta http.StatusOK kalau mau lebih deskriptif). gin.H adalah shortcut Gin untuk map[string]interface{}, mirip fiber.Map di Fiber.
Contoh Konsep
r.GET("/teks", func(c *gin.Context) {
c.String(200, "Ini teks biasa")
})
r.GET("/json", func(c *gin.Context) {
c.JSON(200, gin.H{
"nama": "Kaos CompileDaily",
"harga": 99000,
})
})
r.GET("/tidak-ditemukan", func(c *gin.Context) {
c.JSON(404, gin.H{"error": "Data tidak ditemukan"})
})
Praktikum
Buat route GET /produk/:id yang merespons c.JSON(404, ...) kalau c.Param("id") sama dengan "999", atau c.JSON(200, ...) berisi id dan nama produk contoh untuk id lainnya.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
gin.H{} adalah literal map biasa yang bisa langsung dituliskan inline tanpa perlu deklarasi struct terpisah — cocok untuk response ad-hoc yang strukturnya sederhana dan tidak dipakai berulang, tapi untuk response yang bentuknya konsisten dipakai di banyak endpoint, struct Go biasa (seperti ProdukRequest) tetap lebih baik karena type-safe.