Setiap kali kamu mendaftar di sebuah situs, menulis komentar, atau membuka halaman penuh gambar, ada sesuatu yang dikirim bolak-balik antara browser dan server. “Sesuatu” itu — kontennya, datanya, file-nya — disebut body dari sebuah pesan HTTP. Header menjelaskan paketnya, tapi body adalah paket itu sendiri.
Lewat artikel ini kamu akan paham dengan gamblang apa itu body, kapan sebuah request membawanya, apa yang dikirim balik lewat response, dan bagaimana sebuah header kecil bernama Content-Type memastikan penerima tahu cara membacanya.
Apa itu body sebenarnya
Bayangkan pesan HTTP seperti sebuah amplop surat. Di luar amplop ada alamat, perangko, dan catatan — itu ibarat baris request dan header. Di dalam amplop ada surat itu sendiri — itulah body.
Body adalah muatannya: isi yang sebenarnya. Saat browser meminta sebuah halaman web, HTML halaman itu datang di dalam body. Saat kamu mengirim form, nilai-nilai yang kamu ketik dikemas ke dalam body lalu dikirim. Body bisa berupa teks biasa, data terstruktur seperti JSON, gambar, video, PDF, atau apa pun.
+--------------------------------------+
| Baris request: POST /signup HTTP/1.1 | <- apa & ke mana
| Header: Content-Type: ... | <- soal paketnya
| Content-Length: ... |
| |
| (baris kosong memisahkan head & body)|
| |
| Body: { "name": "Jane" } | <- muatan sebenarnya
+--------------------------------------+
Perhatikan baris kosongnya. Dalam pesan HTTP, header datang lebih dulu, lalu satu baris kosong, baru body. Baris kosong itulah penanda bagi penerima: “deskripsinya sudah selesai, konten yang sebenarnya mulai di sini.”
Head vs body
Head sebuah pesan (baris request, baris status, dan header) adalah metadata — informasi tentang konten. Sedangkan body adalah kontennya itu sendiri. Tidak semua pesan punya body, tapi setiap pesan pasti punya head.
Body request: yang kamu kirim ke server
Body request adalah data yang dikirim klien (biasanya browser, tapi bisa juga aplikasi mobile atau sebuah skrip) ke server. Kamu memakainya setiap kali perlu menyerahkan informasi: form login, tulisan blog baru, foto yang diunggah, atau pembayaran.
Beberapa bentuk umum body request:
- Form data — format klasik saat kamu mengirim sebuah
<form>HTML. Nama field dan nilainya digabung, misalnyaname=Jane+Doe&email=jane%40example.com. - JSON — format teks yang rapi dan terstruktur, dipakai hampir semua aplikasi dan API modern. Nanti kita bahas lebih dekat.
- Unggahan file — byte mentah dari gambar, dokumen, atau video, sering dikirim dalam format khusus bernama
multipart/form-datayang bisa membungkus file dan field sekaligus.
Begini wujud sebuah request dengan body JSON dari awal sampai akhir:
POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 54
{
"name": "John Doe",
"email": "john@example.com"
}
Baris-baris awal adalah method dan header. Lalu baris kosong. Lalu body — objek JSON yang kamu kirim untuk membuat user baru.
Body response: yang dikirim server balik
Body response adalah data yang dikirim server kembali ke klien setelah menangani request. Bagian inilah yang biasanya kamu lihat atau pakai: halaman web, hasil pencarian, gambar, atau file yang diunduh.
Body response punya banyak bentuk:
| Jenis konten | Yang dibawanya | Kamu lihat saat… |
|---|---|---|
text/html |
HTML sebuah halaman web | Membuka situs biasa |
application/json |
Data terstruktur untuk dibaca aplikasi | Aplikasi mengambil data dari API |
image/png |
Byte sebuah gambar PNG | Memuat gambar |
application/pdf |
Dokumen PDF | Mengunduh sebuah faktur |
text/css |
Aturan stylesheet | Browser memuat gaya halaman |
Jadi ide yang sama — body yang membawa muatan — mencakup semuanya, mulai dari halaman web sederhana sampai streaming video raksasa. Yang berubah hanya jenis kontennya.
Browser Server
| |
| ──── request (mungkin body) >|
| | menyusun response
| <── response (dengan body) ──|
| |
menampilkan halaman / memakai data
Method mana yang punya body?
Tidak setiap request perlu mengirim data. Kalau kamu cuma meminta sebuah halaman, tidak ada yang perlu diserahkan. Tapi kalau kamu membuat atau mengubah sesuatu, kamu biasanya perlu mengirim detailnya.
| Method | Tujuan umum | Biasanya punya body request? |
|---|---|---|
GET |
Mengambil sebuah resource | Tidak |
DELETE |
Menghapus sebuah resource | Umumnya tidak |
POST |
Membuat / mengirim data | Ya |
PUT |
Mengganti sebuah resource | Ya |
PATCH |
Memperbarui sebagian resource | Ya |
GET adalah yang perlu kamu ingat: ia meminta sesuatu dan tidak mengirim body. Semua yang perlu kamu sertakan lewat GET dimasukkan ke dalam URL-nya (seperti ?page=2&sort=newest). Sebaliknya, POST, PUT, dan PATCH memang ada untuk membawa data, jadi body itu wajar dan memang diharapkan.
Request GET dan body
Secara teknis aturan HTTP tidak benar-benar melarang body pada request GET, tapi pada praktiknya hampir tidak ada yang mendukungnya, dan itu membingungkan server, cache, serta berbagai tool. Pegangannya: kalau ada data yang mau dikirim, pakai POST atau PUT, bukan GET.
Response lain ceritanya. Hampir semua response punya body — entah halaman, data, atau pesan error. Pengecualian utamanya adalah response yang memang hanya untuk melaporkan hasil, seperti 204 No Content (berhasil, tidak ada yang dikembalikan) atau response untuk request HEAD (yang sengaja hanya meminta header).
Content-Type: label yang memberi tahu cara membacanya
Body hanyalah deretan byte. Byte yang sama itu bisa jadi teks, gambar, atau data terkompresi — penerima mustahil tahu kecuali kamu memberitahunya. Di situlah tugas header Content-Type.
Content-Type mengumumkan format body supaya pihak lain tahu cara menafsirkannya. Beberapa nilai yang umum:
text/html— perlakukan sebagai halaman webapplication/json— uraikan sebagai data JSONtext/plain— teks biasa, tanpa keistimewaanimage/jpeg— tampilkan sebagai gambar JPEGapplication/x-www-form-urlencoded— form data HTML klasikmultipart/form-data— form data yang bisa menyertakan unggahan file
Ini bekerja dua arah. Saat kamu mengirim body, kamu mengatur Content-Type agar server membacanya dengan benar. Saat server membalas, ia mengatur Content-Type supaya browser tahu apakah harus menggambar halaman, menampilkan gambar, atau memicu unduhan.
Kalau labelnya salah
Kalau Content-Type tidak cocok dengan body sebenarnya, hasilnya rusak dengan cara yang membingungkan — JSON datang tapi server menganggapnya teks biasa, atau halaman muncul sebagai kode mentah alih-alih tampilan yang rapi. Ketika sebuah request “tidak jalan”, Content-Type adalah salah satu hal pertama yang patut diperiksa.
Melihat JSON lebih dekat
JSON (JavaScript Object Notation) adalah format yang paling sering kamu temui dalam pengembangan web modern, jadi layak dibahas sebentar. Walau namanya begitu, JSON sudah tidak terikat lagi pada JavaScript — hampir semua bahasa bisa membaca dan menulisnya.
JSON hanyalah teks, disusun dalam bentuk pasangan kunci–nilai. Kunci adalah label di dalam tanda kutip; nilainya bisa berupa teks, angka, true/false, sebuah daftar, atau objek lain yang bersarang.
{
"id": 42,
"name": "Jane Doe",
"isActive": true,
"roles": ["editor", "reviewer"],
"address": {
"city": "Jakarta",
"country": "ID"
}
}
Bacalah seperti formulir berlabel: name adalah “Jane Doe”, isActive bernilai true, roles adalah daftar berisi dua item, dan address adalah objek kecil yang terselip di dalam. Struktur inilah yang membuat JSON populer — mudah dibaca manusia sekaligus gampang diuraikan program.
Saat data ini melaju di dalam body HTTP, pesannya dipasangkan dengan Content-Type: application/json, dan penerima jadi tahu untuk menguraikan teks itu menjadi data terstruktur, bukan memperlakukannya sebagai string biasa.
Menyatukan semuanya
Mari telusuri satu perjalanan bolak-balik yang utuh. Bayangkan sebuah aplikasi di blog.acy-partner.com membuat akun baru:
POST /api/accounts HTTP/1.1
Host: blog.acy-partner.com
Content-Type: application/json
{ "name": "John Doe", "plan": "free" }
Server membaca body JSON-nya, membuat akun, lalu menjawab:
HTTP/1.1 201 Created
Content-Type: application/json
{ "id": 1009, "name": "John Doe", "status": "active" }
Kedua pesan punya body. Keduanya melabelinya dengan Content-Type. Body request membawa apa yang harus dibuat; body response membawa apa yang sudah dibuat. Mekanismenya sama, arahnya berlawanan.
Rangkuman
Body adalah inti sebuah pesan HTTP — muatan yang sebenarnya, dipisahkan dari header oleh satu baris kosong. Ini yang perlu kamu bawa pulang:
- Body request adalah data yang kamu kirim ke server (form data, JSON, unggahan file). Body response adalah yang dikirim server balik (HTML, JSON, gambar, file).
- Method seperti
POST,PUT, danPATCHumumnya membawa body request;GETtidak — datanya masuk ke URL. - Hampir semua response punya body, kecuali yang memang sengaja kosong seperti
204 No Content. Content-Typeadalah label yang memberi tahu penerima cara membaca body. Kalau benar, semuanya berjalan mulus.- JSON adalah format terstruktur sehari-hari: teks pasangan kunci–nilai yang mudah dibaca, dipasangkan dengan
application/json.
Begitu konsep body terasa jelas, langkah berikutnya yang masuk akal adalah melihat kode status — jawaban angka singkat (seperti 200, 201, 404) yang dikirim server bersama body response untuk menyatakan bagaimana hasil request-nya. Bersama-sama, status dan body menceritakan kisah lengkap dari setiap pertukaran di web.