Belajar Chi - Sejarah, Latar Belakang & Mengapa Membutuhkan Chi
Episode 1 of 23

Belajar Chi - Sejarah, Latar Belakang & Mengapa Membutuhkan Chi

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.

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

Pendahuluan

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.

Kelahiran chi dan Filosofinya

Awal Mula Tahun 2015

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:

  • Lightweight: hanya menyediakan routing dan middleware, tidak memaksakan struktur project.
  • Idiomatic: berinteraksi dengan http.Handler, http.HandlerFunc, dan context apa adanya.
  • Composable: middleware, subrouter, dan chain disusun seperti blok Lego.

Satu Dekade Evolusi

Dari tahun 2015, chi terus dibenahi tanpa meninggalkan filosofinya:

  • v1.5 (2019): migrasi penuh ke go.mod dan module system.
  • v5 (2021): major line baru yang membersihkan API dan menyingkirkan fitur usang.
  • v5.3.x (2026): versi stable terbaru dengan perbaikan keamanan dan dukungan Go terbaru.
Lihat daftar versi chi
go list -m -versions github.com/go-chi/chi/v5

go 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.

Masalah yang Diselesaikan chi

Routing yang Tidak Membatasi

net/http sebelum Go 1.22 hanya menyediakan matching rute dengan prefix sederhana. Untuk aplikasi nyata, kalian butuh:

  • URL params: /users/42 dengan nilai dinamis di tengah path.
  • Regex pattern: membatasi param agar hanya menerima digit.
  • Subrouter dan mounting: memisahkan /api, /v1, dan resource lain secara bersih.
  • Middleware berlapis: menerapkan logika berbagi antar grup route.

chi menyelesaikan semuanya dengan satu konsep: router yang juga http.Handler, sehingga tidak ada re-invention terhadap standard library.

Integrasi Mulus dengan Ekosistem

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.

Pasang versi 5.0.0
go get github.com/go-chi/chi/v5@v5.0.0

Perintah go get github.com/go-chi/chi/v5@v5.0.0 berguna kalau kalian perlu menguji perilaku major line ini sejak versi pertamanya.

Chi vs Pendekatan Lain

Posisi chi di Ekosistem

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.
  • Gin dan Echo: kaya fitur dan cepat berproduksi, tapi punya API dan filosofi sendiri yang berbeda dari standard library.
  • Fiber: dibangun di atas fasthttp, bukan net/http, sehingga performa ekstrem dengan trade-off kompatibilitas.
  • chi: setia pada net/http, komposabel, dan transparan.

Perbandingan menyeluruh — termasuk kriteria memilih framework — akan kita bedah tuntas di episode 22.

Kapan Memakai chi

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.

Referensi Resmi dan Tooling Pendukung

Sumber Informasi Terpercaya

Perjalanan kalian akan lebih lancar dengan referensi yang tepat:

  • go-chi.io: situs resmi dengan panduan pemasangan dan contoh cepat.
  • pkg.go.dev/github.com/go-chi/chi/v5: dokumentasi API lengkap setiap package.
  • GitHub go-chi/chi: kode sumber, release notes, dan isu yang terpantau komunitas.
  • go-chi/examples: repo contoh yang bisa langsung kalian jalankan.

Dokumentasi di Terminal

Kalian tidak perlu keluar dari terminal untuk membaca dokumentasi:

Dokumentasi chi
go doc github.com/go-chi/chi/v5

go 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.

Verifikasi Versi Terkini

Sebelum mengikuti episode berikutnya, pastikan selalu memakai rilis terbaru:

Cek versi latest
go list -m -versions github.com/go-chi/chi/v5

go 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.

Penutup

Inti yang harus dibawa pulang:

  • chi lahir 2015 oleh Peter Kieltyka, terinspirasi zenazn/goji dan net/http.
  • Filosofi chi: lightweight, idiomatic, dan composable.
  • Evolusi: v1.5 dengan go.mod, v5 sebagai major line, v5.3.x sebagai versi terbaru.
  • chi memecahkan masalah params, regex, subrouter, dan middleware berlapis.
  • chi tidak meng-invent ulang net/http — ia hanya menambah di atasnya.
  • Posisi chi: di antara 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.