CRUD REST API Lengkap
Penjelasan
REST API CRUD lengkap di Gin menggabungkan semua materi sebelumnya: Group untuk path terorganisir, ShouldBindJSON dengan tag binding untuk data masuk yang otomatis tervalidasi, GORM untuk persist ke database.
Contoh Konsep
produkGroup := r.Group("/produk")
{
produkGroup.GET("", func(c *gin.Context) {
var produk []Produk
db.Find(&produk)
c.JSON(200, produk)
})
produkGroup.POST("", func(c *gin.Context) {
var req Produk
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(422, gin.H{"error": err.Error()})
return
}
db.Create(&req)
c.JSON(201, req)
})
produkGroup.DELETE("/:id", func(c *gin.Context) {
db.Delete(&Produk{}, c.Param("id"))
c.Status(204)
})
}
Praktikum
Bikin r.Group("/artikel") dengan 3 route: GET "" (semua artikel via db.Find()), POST "" (validasi + tambah baru via db.Create()), DELETE "/:id" (hapus via db.Delete(), respons c.Status(204)).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
c.Status(kode) MENGIRIM status code TANPA body response — beda dari c.JSON(kode, nil) yang tetap mengirim body "null", cocok dipakai untuk DELETE yang memang tidak perlu mengembalikan data apa pun.