Skip to main content

From Express to Fiber

· 4 min read
Riky Hidayat

Express merupakan web framework node js yang sangat popular karena kemudahannya dalam proses development, Express JS memiliki 54,7k stars di Github express. Kepopuleran express dan kemudahan dalam penggunannya ini diadopsi oleh sebuah web framework bernama Fiber dari Golang.

Pada halaman resmi Fiber, dijelaskan bahwa Fiber terinspirasi dari Express yang bahasa pemrogramannya menggunakan Go.

Motivasi Go Fiber#

Seperti yang sudah disebutkan sebelumnya, bahwa Fiber terinspirasi dari Express. Sebagai contoh, dibawah ini simple penggunaan Fiber dan Express:

main.go
package main
import "github.com/gofiber/fiber"
func main() {    // inisiasi Fiber    app := fiber.New()
    // routes    app.Get("/", hello)
    // memulai server    app.Listen(3000)}
// Handler
func hello(c *fiber.Ctx){    c.send("Hello!")}

Bandingkan dengan penulisan di express:

app.js
const express = require("express");
// inisiasi expressconst app = express();
// routesapp.get("/", hello);
// memulai serverapp.listen(3000);
// Handlerconst hello = (req, res) => {  res.send("Hello!");};

Sama seperti Express, sampel diatas sudah bisa membuat sebuah server. Yang paling menarik adalah fiber menggunakan fasthttp RequestCtx package, yang dasarnya membantu kita dalam handling HTTP request dan response, dengan semua methodnya yang beberapa kita ketahui, seperti: req.query, req.params, req.body, dan lain-lain.

Untuk menjalankan kode Go diatas, kita harus memastikan dulu Go sudah terinstal di perangkat kita. Setelah itu kita install package fiber dengan menggunakan perintah go get -u github.com/gofiber/fiber

Fiber Fitur#

Routing#

Seperti Express, Fiber datang dengan fitur router yang memiliki performa bagus. Router di fiber memiliki callback function yang otomatis berjalan setiap request cocok dengan path pada server kita. Mari kita lihat ciri-ciri routing di Fiber:

// Function Signatureapp.Method(path string, ...func(*fiber.Ctx))

Perlu diingat jika Method diatas merepresentasikan HTTP methods - GET, POST, PUT, DELETE, dll. path merepresentasikan route yang akan kita tuju, dan ...func(*fiber.Ctx) merepresentasikan handler atau callback yang berjalan di setiap routenya.

We can think of a route as one big ordered slice. Ketika sebuah request datang, handler yang pertama cocok dengan methodnya, path, dan patternnya akan dieksekusi.

Context#

Seperti yang sudah dikatakan sebelumnya, context disini merepresentasikan HTTP request dan response, dengan metode untuk request query, pamater, body, dan seterusnya. method yang paling dasar dan mudah digunakan yaitu Body method --- req.body apabila dibandingkan dengan Express.

Di Fiber, ciri utamanya untuk context Body method yaitu:

c.Body() string // type string

Contoh penggunaan:

// curl -X POST http://localhost:4000 -d user=john developmentapp.Post("/", func(c *fiber.Ctx) {    // mendapatkan data body dari POST request    c.Body() // user=john development})

Detil lebih lanjut tentang method lain yang ada di context dapat dilihat di dokumentasi ini.

Middleware#

Fiber secara default sudah memiliki middleware. Untuk merefresh apa itu middleware, middleware berguna untuk intersepsi atau manipulasi request sebelum sampai ke handler atau controller.

Mari kita lihat penggunaan middleware:

func main() {    // membuat instance fiber    app := fiber.New()
    // membuat route    app.Get("/demo", handler())    app.Get("/list", handler())
    // middleware    app.Use(func(c *fiber.Ctx) {        c.SendStatus(404) // => 404 "Not Found"    })
    // Start server on http://localhost:3000    app.Listen(3000)}

Pada kode diatas, middleware akan ngecek route yang tidak cocok dengan route yang sudah dibuat. Sama seperti express, kita dapat memasukan middleware ini dengan perintah app.Use() method.

Ciri utama dalam penggunaan Use method, seperti dibawah ini:

func (*fiber.App).Use(args ...interface{}) *fiber.App

Nah itu dia beberapa fitur yang ada di Fiber, sekarang kita sudah sedikit banyak tau mengenai routing, context, dan middleware.

Kesimpulan#

Fiber akan sangat cocok untuk node.js developer (express) untuk mulai menggunakan Fiber sekaligus menambah wawasan bahasa Go.

Seperti yang telah kita lihat, Fiber sangat mudah diguanakan sepert Express. Dengan didukung fasthttp method, fiber memiliki performa yang sangat tinggi. Fiber juga mendukung untuk static file, prefork feature, template engines, websocket, testing, dan masih banyak lagi.

Sekian saja dari saya, semoga bermanfaat, terimakasih!