POST: Membuat Todo dari Body JSON

Membaca body request dengan json.Decoder, menyimpan data, dan menjawab 201 Created.

Part 7 dari 17 ± 35 menit Gratis

Alur endpoint POST /todos

  1. Client mengirim body JSON: {"title":"Belajar Go"}
  2. Server membaca body itu ke sebuah struct (decode).
  3. Server menyimpan data baru ke store.
  4. Server menjawab 201 Created beserta data yang baru dibuat (lengkap dengan ID).

Membaca body request

Body request ada di r.Body. Gunakan json.NewDecoder untuk mengubahnya menjadi struct:

var in struct {
    Title string `json:"title"`
}
err := json.NewDecoder(r.Body).Decode(&in)
if err != nil {
    writeJSON(w, http.StatusBadRequest, map[string]string{"error": "JSON tidak valid"})
    return
}
  • in adalah struct tanpa nama (anonim) khusus untuk input. Memisahkan struct input dari Todo mencegah client mengisi id atau done sendiri.
  • &in (alamat/pointer) wajib agar Decode bisa mengisi isi struct.
  • JSON rusak ({rusak) membuat Decode mengembalikan error → jawab 400.

200 atau 201?

201 Created adalah status standar untuk "data baru berhasil dibuat". Gunakan http.StatusCreated.

Mencoba dengan curl

curl -i -X POST http://localhost:8080/todos \
  -H "Content-Type: application/json" \
  -d '{"title":"Belajar Go"}'

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