Belajar Fiber - Routing Lanjutan dan Parameter Handler
Episode 7 of 23

Belajar Fiber - Routing Lanjutan dan Parameter Handler

Episode ini membedah routing lanjutan Fiber v3: semua metode HTTP, app.Add dan app.All, mendaftarkan banyak handler pada satu route, handler variadic, multiple routes dalam satu panggilan, serta batas jumlah handler per route yang boleh didaftarkan.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Di episode 4 kalian sudah mengenal path parameter dan constraints. Episode 7 melengkapi fondasi routing: bagaimana mendaftarkan route untuk setiap metode HTTP, menggabungkan banyak handler dalam satu route, memakai handler variadic, dan memahami batasan jumlah handler yang bisa didaftarkan.

Topik ini sering diremehkan, padahal pola handler variadic dan multiple route dalam satu panggilan akan sering kalian temui saat membaca kode open-source Fiber. Menguasainya membuat kalian lancar membaca dan menulis API yang kompleks.

Metode HTTP di Fiber

Daftar Metode yang Tersedia

Fiber v3 menyediakan method untuk setiap verba HTTP standar. Berikut pemetaannya:

Semua metode HTTP
app.Get("/resource", listHandler)       // READ
app.Post("/resource", createHandler)    // CREATE
app.Put("/resource/:id", updateHandler) // UPDATE menyeluruh
app.Patch("/resource/:id", patchHandler)
app.Delete("/resource/:id", deleteHandler)
app.Options("/resource", optionsHandler)
app.Head("/resource", headHandler)
app.Trace("/resource", traceHandler)
app.Connect("/resource", connectHandler)

Selain method eksplisit, ada dua helper penting. app.All(path, ...handler) mendaftarkan route yang cocok dengan metode apa pun, dan app.Add(method, path, ...handler) menerima metode sebagai string — berguna saat metode ditentukan secara dinamis dari data.

Route dengan Banyak Handler

Satu route bisa memiliki beberapa handler. Fiber mengeksekusinya berurutan dalam satu pipeline — handler pertama bisa berperan sebagai middleware khusus route:

Multiple handler per route
func checkBody(c fiber.Ctx) error {
    if len(c.Body()) == 0 {
        return c.Status(fiber.StatusBadRequest).SendString("body kosong")
    }
    return c.Next()
}
 
app.Post("/submit", checkBody, func(c fiber.Ctx) error {
    return c.JSON(fiber.Map{"ok": true, "data": c.Body()})
})

checkBody memvalidasi request sebelum handler utama berjalan. Karena di-passing langsung ke route, middleware ini hanya berlaku untuk /submit, bukan untuk semua route.

Handler Variadic

Mendaftarkan Banyak Route Sekaligus

Fiber v3 menerima daftar handler yang beragam dalam satu panggilan, termasuk kombinasi string route dan fiber.Handler:

Handler variadic
app.Get("/a", handlerA, "/b", handlerB, handlerC)

Pola ini membuat app.Get("/a", handlerA, "/b", handlerB, handlerC) mendaftarkan dua route sekaligus: /a dengan handlerA, lalu /b dengan handlerB dan handlerC berurutan. Kemampuan ini berasal dari definisi signature handler yang variadic:

Signature handler variadic
func (app *App) Get(path string, handlers ...any) Routes

Variadic ...any menerima string (path baru) maupun fiber.Handler. Ini berguna saat ingin mendaftarkan route dengan baris yang ringkas, misalnya kumpulan route sederhana yang menangani satu resource.

Konversi Handler Biasa

Tidak semua fungsi handler berbentuk fiber.Handler. Fiber menyediakan fungsi konversi agar handler dari library lain bisa langsung dipakai:

Konversi handler
app.Get("/nethttp", adaptor.HTTPHandler(handler))
app.Get("/gin", adaptor.HTTPHandlerFunc(writeGinLikeResponse))

Package github.com/gofiber/fiber/v3/adaptor menyediakan HTTPHandler, HTTPHandlerFunc, HTTPMiddleware, dan HTTPMiddlewareFunc untuk mengadaptasi handler net/http maupun Gin ke Fiber. Ini sangat membantu saat migrasi bertahap dari framework lain.

Batas Jumlah Handler per Route

Pengaturan FiberConfig Routes

Fiber membatasi jumlah handler yang dapat didaftarkan pada satu route. Nilai defaultnya 5 dan bisa diubah lewat konfigurasi:

Mengatur batas handler
app := fiber.New(fiber.Config{
    Routes: fiber.Routes{
        UsePathParams: true,
        StrictRouting: false,
        CaseSensitive: false,
        RouteHandlerLimit: 10,
    },
})

RouteHandlerLimit: 10 menaikkan batas handler per route dari default 5 menjadi 10. Jika kalian mendaftarkan lebih banyak handler dari batas, Fiber mengembalikan error pada saat startup. Sisanya, UsePathParams mengaktifkan parameter pada middleware app.Use dan StrictRouting/CaseSensitive mengatur ketegasan pencocokan path.

Uji Coba

Tes variadic dan multiple handler
curl http://localhost:3000/a
curl -X POST http://localhost:3000/submit
curl -X POST -d '{"x":1}' http://localhost:3000/submit
curl http://localhost:3000/nethttp

Request pertama ke /a menjalankan handlerA yang didaftarkan secara variadic. Request POST ke /submit tanpa body mengembalikan 400 dari checkBody; dengan body mengembalikan {"ok":true}. Endpoint /nethttp membuktikan handler net/http bisa diadaptasi langsung.

Penutup

Inti yang harus dibawa pulang:

  • Fiber menyediakan method untuk semua verba HTTP: Get, Post, Put, Patch, Delete, Options, Head, Trace, Connect.
  • app.All mencocokkan semua metode; app.Add(method, path, ...) menerima metode dinamis.
  • Satu route bisa punya banyak handler yang dieksekusi berurutan dalam satu pipeline.
  • Handler variadic memungkinkan app.Get("/a", hA, "/b", hB) mendaftarkan banyak route sekaligus.
  • Package adaptor mengubah handler net/http dan Gin menjadi fiber.Handler.
  • Routes.RouteHandlerLimit mengontrol batas jumlah handler per route, default 5.

Di episode 8 selanjutnya kita membahas group dan domain routing — mengorganisasi route ke dalam RouteGroup, nested group, mounting sub-app, serta fitur v3 RouteChain dan domain routing per host.

Belajar Fiber - Routing Lanjutan dan Parameter Handler | Belajar Fiber