Study
Fiber

Validasi Input

Penjelasan

Fiber juga TIDAK punya validasi bawaan — pola paling umum SAMA dengan Echo: memakai package go-playground/validator dengan tag validate: di struct, bedanya cuma cara memanggilnya (Fiber tidak punya c.Validate() bawaan seperti Echo, validator dipanggil langsung sebagai instance terpisah).

Contoh Konsep

// go get github.com/go-playground/validator/v10
var validate = validator.New()

type ProdukRequest struct {
	Nama  string  `json:"nama" validate:"required,min=3"`
	Harga float64 `json:"harga" validate:"required,gte=0"`
}

app.Post("/produk", func(c *fiber.Ctx) error {
	var req ProdukRequest
	if err := c.BodyParser(&req); err != nil {
		return err
	}
	if err := validate.Struct(req); err != nil {
		return c.Status(fiber.StatusUnprocessableEntity).JSON(fiber.Map{"error": err.Error()})
	}
	return c.Status(fiber.StatusCreated).JSON(req)
})

Praktikum

Tambahkan tag validate ke ArtikelRequest: Judul wajib string minimal 5 karakter, Isi wajib diisi. Panggil validate.Struct() setelah c.BodyParser() di route POST /artikel.

Editor Latihan

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

Tips

validator.New() SEBAIKNYA dibuat SEKALI di level package (variabel global, seperti var validate = validator.New() di contoh) dan dipakai ulang di semua handler — instance validator aman dipakai bersamaan dari banyak goroutine (thread-safe), jadi tidak perlu dibuat baru tiap request.