For the complete documentation index, see llms.txt. This page is also available as Markdown.
Json
Setelah server bisa menyala dan mati dengan aman, sekarang saatnya membangun isi komunikasi API itu sendiri. Hampir semua API modern menggunakan JSON (JavaScript Object Notation) sebagai format pertukaran data karena ringan, mudah dibaca manusia, dan didukung oleh hampir semua bahasa pemrograman.
Di bab ini kita akan mengubah handler HelloWorld menjadi endpoint API yang sesungguhnya: mengembalikan daftar pengguna dalam format JSON.
📂 Kode Lengkap Bab Ini:
Seluruh kode yang dibahas di bab ini tersedia di GitHub:
Konvensi penamaan: Di Go kita menggunakan PascalCase untuk field struct (karena bersifat publik), tapi di JSON kita menggunakan snake_case — ini praktik umum dalam API REST.
3.3 Membuat Handler JSON Pertama
Handler ListUsers akan:
Menyiapkan data contoh (biasanya dari database, nanti akan kita bahas)
Mengonversi (marshal) data Go ke JSON
Mengatur header Content-Type
Menulis response ke client
3.4 Kode Lengkap main.go
Berikut kode lengkap yang menggabungkan startup, graceful shutdown, dan JSON response:
3.5 Menjalankan dan Menguji
Jalankan server:
Uji endpoint menggunakan curl:
Response yang diharapkan:
3.6 Catatan Penting tentang Password
Peringatan keamanan: Dalam contoh di atas, password dikirim dalam bentuk plain text! Ini TIDAK boleh dilakukan di aplikasi nyata. Nanti kita akan membahas:
Hashing password (bcrypt)
Tidak mengirim field password dalam response API
Menggunakan struct tags seperti json:"password,omitempty" atau DTO (Data Transfer Object)
Ringkasan Bab 3
Di bab ini kita telah belajar:
Membuat struct dengan JSON tags untuk memetakan data Go ke JSON
Menggunakan json.Marshal untuk mengonversi data menjadi JSON
Mengatur Content-Type: application/json di response header
Menulis JSON response ke http.ResponseWriter
Menambahkan dependency management dengan go mod
Apa yang sudah bisa dilakukan API kita:
✅ Menyalakan server dengan konfigurasi timeout
✅ Mematikan server secara graceful
✅ Mengembalikan response dalam format JSON
Yang masih perlu ditambahkan:
❌ Menerima data dari client (request body)
❌ Validasi data
❌ Menyimpan data ke database
❌ Status HTTP yang tepat (200, 400, 404, dsb)
Pada bab berikutnya, kita akan menghubungkan API dengan database agar data tidak lagi statis/hardcoded.