Mengirim Response JSON

Mengubah struct Go menjadi JSON, mengatur Content-Type dan status code dengan helper writeJSON.

Part 4 dari 17 ± 35 menit Gratis

JSON: bahasa data API

Hampir semua REST API bertukar data dalam format JSON. Contoh JSON sebuah todo:

{"id": 1, "title": "Belajar Go", "done": false}

Di Go, data biasanya dimodelkan dengan struct, lalu diubah menjadi JSON memakai paket encoding/json (proses ini disebut encode atau marshal).

Struct dan struct tag

type Todo struct {
    ID    int    `json:"id"`
    Title string `json:"title"`
    Done  bool   `json:"done"`
}

Teks di dalam tanda backtick disebut struct tag. json:"title" berarti "di JSON, field ini bernama title". Tanpa tag, nama JSON-nya mengikuti Go (Title, huruf besar). Field harus berawalan huruf kapital agar bisa di-encode.

Tiga langkah menulis response JSON

  1. Header: beri tahu client bahwa isinya JSON — w.Header().Set("Content-Type", "application/json").
  2. Status code: w.WriteHeader(http.StatusOK) (nilai 200).
  3. Body: json.NewEncoder(w).Encode(data) mengubah data menjadi JSON dan langsung menulisnya ke w.

Urutan wajib: header diatur sebelum WriteHeader, dan WriteHeader sebelum menulis body. Begitu body mulai ditulis, header dan status sudah terkirim dan tidak bisa diubah lagi.

Bungkus jadi helper

Ketiga langkah itu akan kita pakai di setiap handler, jadi satukan dalam satu fungsi:

func writeJSON(w http.ResponseWriter, status int, data any) {
    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(status)
    json.NewEncoder(w).Encode(data)
}

data any artinya parameter ini boleh berisi tipe apa saja (struct, slice, map). Pemakaiannya di handler jadi satu baris: writeJSON(w, http.StatusOK, todo).

Konstanta status

Alih-alih angka mentah, pakai konstanta agar mudah dibaca: http.StatusOK (200), http.StatusCreated (201), http.StatusNotFound (404).

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X