Episode ini mengajak kalian menelusuri kelahiran chi tahun 2015, evolusinya dari goji hingga v5.3.x pada 2026, dan filosofi lightweight, idiomatic, serta composable yang membedakannya. Kalian juga melihat masalah routing dan middleware yang diselesaikan chi dibanding pendekatan lain.

Sebelum menulis route, kalian perlu tahu mengapa chi ada. Episode 1 menceritakan sejarah, latar belakang, dan alasan chi dibutuhkan — supaya keputusan memakai chi di project bukan keputusan ikut-ikutan, melainkan keputusan sadar yang memahami masalah yang sedang diselesaikan.
Banyak pengembang Go bingung memilih router: ada net/http polos, chi, Gin, Echo, dan Fiber. Masing-masing muncul dari filosofi yang berbeda. chi hadir dengan satu janji utama: tetap menjadi net/http, hanya menambahkan lapisan routing dan middleware yang idiomatis. Episode ini menelusuri dari mana janji itu berasal dan bagaimana ia bertahan lebih dari satu dekade.
chi dibuat pada tahun 2015 oleh Peter Kieltyka, terinspirasi dari zenazn/goji — sebuah router minimal untuk Go — dan net/http murni. Alih-alih membangun abstraksi baru, Peter ingin router yang duduk rapi di atas standard library. Hasilnya adalah chi: ringan, idiomatis, dan composable.
Filosofi ini tertanam di setiap desainnya:
http.Handler, http.HandlerFunc, dan context apa adanya.Dari tahun 2015, chi terus dibenahi tanpa meninggalkan filosofinya:
go.mod dan module system.go list -m -versions github.com/go-chi/chi/v5go list -m -versions github.com/go-chi/chi/v5 menampilkan semua rilis yang bisa dipasang. Kalian bisa melihat sendiri transisi v5.0.0 sampai v5.3.1.
net/http sebelum Go 1.22 hanya menyediakan matching rute dengan prefix sederhana. Untuk aplikasi nyata, kalian butuh:
/users/42 dengan nilai dinamis di tengah path./api, /v1, dan resource lain secara bersih.chi menyelesaikan semuanya dengan satu konsep: router yang juga http.Handler, sehingga tidak ada re-invention terhadap standard library.
Karena chi murni net/http, semua middleware dan library yang ditulis untuk standard library langsung berfungsi tanpa adapter. http.Handler milik kalian, http.ServeMux milik orang lain, dan server buatan sendiri semuanya bisa digabung dengan router chi.
go get github.com/go-chi/chi/v5@v5.0.0Perintah go get github.com/go-chi/chi/v5@v5.0.0 berguna kalau kalian perlu menguji perilaku major line ini sejak versi pertamanya.
chi berdiri di tengah spektrum: lebih dari net/http polos karena menyediakan params, subrouter, dan middleware bawaan; tetapi lebih sedikit dari Gin, Echo, dan Fiber yang membawa binding, validation, dan konvensi sendiri.
net/http polos: paling minimal, tapi kalian menulis banyak boilerplate sendiri.net/http, sehingga performa ekstrem dengan trade-off kompatibilitas.net/http, komposabel, dan transparan.Perbandingan menyeluruh — termasuk kriteria memilih framework — akan kita bedah tuntas di episode 22.
chi paling terasa manfaatnya ketika kalian ingin kontrol penuh, menyukai middleware idiomatis, dan menghargai bahwa setiap handler adalah http.Handler biasa. Bagi backend developer yang menyukai pendekatan minimalis, ini rumah yang tepat.
Perjalanan kalian akan lebih lancar dengan referensi yang tepat:
Kalian tidak perlu keluar dari terminal untuk membaca dokumentasi:
go doc github.com/go-chi/chi/v5go doc github.com/go-chi/chi/v5 menampilkan ringkasan API router langsung dari modul yang terpasang. Ini cara tercepat memeriksa tanda tangan fungsi tanpa membuka browser.
Sebelum mengikuti episode berikutnya, pastikan selalu memakai rilis terbaru:
go list -m -versions github.com/go-chi/chi/v5go list -m -versions github.com/go-chi/chi/v5 menampilkan seluruh rilis — bandingkan dengan release notes di GitHub untuk memastikan tidak ada perbaikan keamanan yang terlewat.
Inti yang harus dibawa pulang:
net/http.net/http — ia hanya menambah di atasnya.net/http polos dan framework kaya fitur.Di episode 2 selanjutnya kita akan membedah konsep dasar dan arsitektur utama chi — apa itu radix tree, bagaimana chi.RouteContext bekerja, mengapa context Go membawa params dan middleware stack, serta komponen apa saja yang menyusun router ini. Persiapkan diri kalian, karena mulai sekarang kita masuk ke kode.