Study
Echo

Query String & Request Body

Penjelasan

Query string diakses lewat c.QueryParam("nama"). Untuk body request (JSON dari POST/PUT), Echo memakai c.Bind(&struct) — otomatis mem-parsing JSON dan mengisi field struct Go yang sudah didefinisikan, berdasarkan tag json: di tiap field-nya.

Contoh Konsep

type ProdukRequest struct {
	Nama  string  `json:"nama"`
	Harga float64 `json:"harga"`
}

e.GET("/cari", func(c echo.Context) error {
	q := c.QueryParam("q")
	halaman := c.QueryParam("page")
	return c.String(http.StatusOK, fmt.Sprintf("Mencari: %s, halaman: %s", q, halaman))
})

e.POST("/produk", func(c echo.Context) error {
	var req ProdukRequest
	if err := c.Bind(&req); err != nil {
		return c.JSON(http.StatusBadRequest, map[string]string{"error": err.Error()})
	}
	return c.JSON(http.StatusCreated, req)
})

Praktikum

Buat struct ArtikelRequest dengan field Judul dan Isi (tag json). Buat route POST /artikel yang meng-c.Bind() body request ke struct itu, merespons c.JSON() berisi pesan konfirmasi.

Editor Latihan

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

Tips

c.Bind() TIDAK melakukan validasi apa pun terhadap ISI data (mis. field wajib atau tidak) — dia CUMA mem-parsing JSON jadi struct Go. Validasi aturan data (required, minimal panjang, dst) perlu library terpisah, dibahas di materi Validasi Input.