Study
Gin

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)).

Editor Latihan

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.