Study
Echo

Middleware Dasar

Penjelasan

Middleware Echo bertipe echo.MiddlewareFunc — fungsi yang MEMBUNGKUS echo.HandlerFunc berikutnya (disebut next), dijalankan SEBELUM (dan bisa juga sesudah) handler utama. Didaftarkan global lewat e.Use(), atau per-route sebagai argumen tambahan di pendaftaran route.

Contoh Konsep

func CekUmur(next echo.HandlerFunc) echo.HandlerFunc {
	return func(c echo.Context) error {
		umur, _ := strconv.Atoi(c.QueryParam("umur"))
		if umur < 18 {
			return c.String(http.StatusForbidden, "Akses ditolak, umur minimal 18 tahun")
		}
		return next(c) // lanjut ke handler berikutnya
	}
}

e.GET("/dewasa", func(c echo.Context) error {
	return c.String(http.StatusOK, "Selamat datang!")
}, CekUmur)

Praktikum

Buat middleware CekJamKerja yang menolak akses (403) kalau jam sekarang (time.Now().Hour()) di luar rentang 8-17, dan memanggil next(c) kalau masih dalam jam kerja. Pasangkan ke route GET /admin.

Editor Latihan

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

Tips

Middleware Echo berbentuk HIGHER-ORDER FUNCTION (fungsi yang mengembalikan fungsi) — beda dari pola middleware Express.js yang menerima (req, res, next) sebagai tiga argumen terpisah, Echo membungkus next SEBAGAI PARAMETER FUNGSI LUAR, baru fungsi dalamnya yang jadi handler sesungguhnya.