Jika Anda seorang pengembang web, Anda mungkin tahu betapa pentingnya berkomunikasi secara efektif dengan server web yang menghosting aplikasi Anda. Anda perlu mengirim permintaan yang tepat dan menerima respons yang tepat, sehingga aplikasi Anda dapat berfungsi dengan baik dan memberikan pengalaman pengguna yang luar biasa. Tetapi tahukah Anda cara menggunakan header HTTP accept untuk mengoptimalkan komunikasi ini dan membuat aplikasi Anda lebih fleksibel dan efisien? Jika tidak, jangan khawatir.
Dalam postingan blog ini, saya akan mengajarkan semua yang perlu Anda ketahui tentang header HTTP accept dan cara menggunakan alat seperti Apidog untuk menguji dan men-debug permintaan dan respons HTTP Anda.
Apa Itu Header HTTP Accept dan Bagaimana Cara Kerjanya?
Header HTTP accept adalah bagian dari pesan permintaan. Ini adalah cara bagi klien untuk memberi tahu server jenis konten apa yang dapat diterima dan diprosesnya. Konten dapat berupa apa saja yang dapat disediakan server, seperti HTML, XML, JSON, gambar, video, audio, dll. Header HTTP accept memiliki format berikut:
Accept: media-type, media-type, ...
Media-type adalah string yang menentukan jenis dan subtipe konten, seperti text/html
, application/json
, image/jpeg
, dll. Anda juga dapat menggunakan wildcard untuk menunjukkan jenis atau subtipe apa pun, seperti */*
, text/*
, image/*
, dll. Anda juga dapat menggunakan parameter untuk memberikan detail lebih lanjut tentang konten, seperti kualitas, bahasa, pengkodean, dll. Misalnya, text/html;q=0.8,en-US
berarti bahwa klien dapat menerima dokumen HTML dengan kualitas 0,8 (dari 1) dan dalam Bahasa Inggris AS.
Anda dapat menentukan beberapa media-type di header HTTP accept, dipisahkan dengan koma. Urutan media-type menunjukkan preferensi klien. Media-type pertama adalah yang paling disukai, yang kedua adalah yang paling disukai kedua, dan seterusnya. Misalnya, Accept: text/html,application/json,image/png
berarti bahwa klien lebih menyukai dokumen HTML, kemudian data JSON, kemudian gambar PNG.

Mengapa Header HTTP Accept Penting?
Header HTTP accept adalah cara yang ampuh untuk menegosiasikan konten antara klien dan server. Ini memungkinkan klien untuk meminta berbagai jenis konten berdasarkan kemampuan dan preferensinya, dan memungkinkan server untuk mengirimkan konten terbaik untuk klien, berdasarkan ketersediaan dan kompatibilitasnya. Ini dapat meningkatkan kinerja, efisiensi, dan pengalaman pengguna dari klien dan server.
Header HTTP accept penting karena membantu server mengirimkan konten terbaik untuk klien, berdasarkan kemampuan dan preferensinya. Ini juga membantu server menghindari pengiriman data yang tidak perlu atau tidak kompatibel yang tidak dapat digunakan atau ditampilkan oleh klien. Ini dapat meningkatkan kinerja, efisiensi, dan pengalaman pengguna dari klien dan server.
Cara Menggunakan Header HTTP Accept untuk Meminta Berbagai Jenis Konten dari Server
Untuk menulis header HTTP accept dalam pesan permintaan Anda, Anda perlu menggunakan alat atau pustaka yang memungkinkan Anda mengirim permintaan HTTP. Ada banyak alat dan pustaka yang tersedia untuk berbagai bahasa dan platform, seperti curl, Apidog, Axios, Fetch, dll. Untuk contoh ini, saya akan menggunakan curl, yang merupakan alat baris perintah yang dapat Anda gunakan untuk mengirim permintaan HTTP dan menerima respons HTTP.
Untuk menggunakan curl, Anda perlu mengetik perintah berikut di terminal Anda:
curl -H "Accept: media-type, media-type, ..." URL
Opsi -H
memungkinkan Anda menambahkan header ke permintaan Anda. Accept: media-type, media-type, ...
adalah header HTTP accept yang ingin Anda kirim. URL
adalah alamat server tempat Anda ingin meminta data. Misalnya, jika Anda ingin meminta dokumen HTML dari https://example.com, Anda dapat mengetik:
curl -H "Accept: text/html" https://example.com
Ini akan mengirim permintaan ke https://example.com dengan header Accept: text/html
, yang berarti bahwa Anda hanya dapat menerima dokumen HTML sebagai respons.
Untuk membaca pesan respons dari server, Anda perlu melihat kode status, header content-type, dan isi pesan.
Misalnya, jika Anda mengirim permintaan curl -H "Accept: text/html" https://example.com
, Anda mungkin menerima respons berikut:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
<html>
<head>
<title>Example Domain</title>
</head>
<body>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</body>
</html>
Kode statusnya adalah 200, yang berarti bahwa permintaan berhasil. Header content-type adalah text/html; charset=UTF-8
, yang berarti bahwa server mengirim kembali dokumen HTML dengan pengkodean UTF-8.
Anda dapat menggunakan header HTTP accept untuk meminta berbagai jenis konten dari server dengan mengubah media-type dalam permintaan Anda. Misalnya, jika Anda ingin meminta data JSON dari https://example.com, Anda dapat mengetik:
curl -H "Accept: application/json" https://example.com
Ini akan mengirim permintaan ke https://example.com dengan header Accept: application/json
, yang berarti bahwa Anda hanya dapat menerima data JSON sebagai respons. Anda mungkin menerima respons berikut:
HTTP/1.1 200 OK
Content-Type: application/json
{
"domain": "example.com",
"purpose": "illustrative examples in documents",
"link": "https://www.iana.org/domains/example"
}
Kode statusnya adalah 200, yang berarti bahwa permintaan berhasil. Header content-type adalah application/json
, yang berarti bahwa server mengirim kembali data JSON. Isi pesan adalah data JSON itu sendiri, yang dapat Anda lihat di browser Anda atau di situs web Apidog.
Anda juga dapat meminta beberapa jenis konten dari server dengan menentukan lebih dari satu media-type dalam permintaan Anda. Misalnya, jika Anda ingin meminta dokumen HTML atau data JSON dari https://example.com, Anda dapat mengetik:
curl -H "Accept: text/html,application/json" https://example.com

Cara Menangani Berbagai Jenis Respons dari Server Berdasarkan Header HTTP Accept
Terkadang, server mungkin tidak dapat mengirim kembali jenis konten yang tepat yang Anda minta dengan header HTTP accept. Ini dapat terjadi karena berbagai alasan, seperti:
- Server tidak memiliki konten dalam format yang Anda minta
- Server memiliki konten dalam format yang Anda minta, tetapi saat ini tidak tersedia
- Server memiliki konten dalam format yang Anda minta, tetapi tidak berwenang untuk membagikannya dengan Anda
- Server memiliki konten dalam format yang Anda minta, tetapi terlalu besar atau terlalu kompleks untuk dikirim kembali
- Server tidak memahami atau mendukung media-type yang Anda minta
Ada banyak kemungkinan kode status yang dapat dikirim kembali oleh server, tetapi berikut adalah beberapa yang paling umum yang mungkin Anda temui saat menggunakan header HTTP accept:
- 200 (OK): Ini berarti bahwa permintaan berhasil dan server mengirim kembali jenis konten yang tepat yang Anda minta dengan header HTTP accept. Misalnya, jika Anda mengirim permintaan
curl -H "Accept: text/html" https://example.com
, dan server mengirim kembali dokumen HTML dengan kode status 200, ini berarti bahwa semuanya berjalan dengan baik dan Anda dapat menggunakan dokumen HTML sesuai keinginan Anda. - 206 (Konten Parsial): Ini berarti bahwa permintaan berhasil dan server mengirim kembali jenis konten yang berbeda yang juga dapat Anda terima dengan header HTTP accept. Misalnya, jika Anda mengirim permintaan
curl -H "Accept: text/html,application/json" https://example.com
, dan server mengirim kembali data JSON dengan kode status 206, ini berarti bahwa server tidak dapat menyediakan dokumen HTML, tetapi dapat menyediakan data JSON, yang juga dapat Anda terima. Anda dapat menggunakan data JSON sesuai keinginan Anda, tetapi Anda harus menyadari bahwa itu bukan jenis konten pilihan yang Anda minta. - 406 (Tidak Dapat Diterima): Ini berarti bahwa permintaan gagal dan server tidak dapat menyediakan jenis konten apa pun yang dapat Anda terima dengan header HTTP accept. Misalnya, jika Anda mengirim permintaan
curl -H "Accept: text/html" https://example.com
, dan server mengirim kembali pesan kesalahan dengan kode status 406, ini berarti bahwa server tidak memiliki dokumen HTML untuk dikirim kembali, dan tidak memiliki jenis konten lain yang dapat Anda terima. Anda tidak dapat menggunakan pesan kesalahan sesuai keinginan Anda, tetapi Anda harus membacanya dengan cermat dan mencoba memahami mengapa server tidak dapat mengirim kembali konten yang Anda minta. Anda mungkin perlu mengubah permintaan Anda atau menghubungi administrator server untuk informasi lebih lanjut. - 415 (Jenis Media Tidak Didukung): Ini berarti bahwa permintaan gagal dan server tidak memahami atau mendukung media-type yang Anda minta dengan header HTTP accept. Misalnya, jika Anda mengirim permintaan
curl -H "Accept: application/x-custom" https://example.com
, dan server mengirim kembali pesan kesalahan dengan kode status 415, ini berarti bahwa server tidak tahu apa ituapplication/x-custom
, dan tidak dapat menyediakan konten apa pun dalam format itu. Anda tidak dapat menggunakan pesan kesalahan sesuai keinginan Anda, tetapi Anda harus membacanya dengan cermat dan mencoba memahami mengapa server tidak mendukung media-type yang Anda minta. Anda mungkin perlu mengubah permintaan Anda atau menghubungi administrator server untuk informasi lebih lanjut.
Header content-type dan isi pesan respons juga dapat bervariasi tergantung pada kode status dan media-type yang dikirim kembali oleh server. Anda dapat menggunakan alat seperti Apidog untuk melihat header content-type dan isi pesan dengan cara yang mudah digunakan.
Cara menggunakan Apidog untuk menguji dan men-debug header HTTP accept saya?
Apidog adalah alat berbasis web yang membantu Anda menguji, men-debug, dan mendokumentasikan API Anda secara gratis.
Untuk menggunakan Apidog untuk menguji dan men-debug header HTTP accept Anda, Anda perlu mengikuti langkah-langkah berikut:
- Klik tombol "Permintaan Baru" untuk membuat permintaan HTTP baru.

- Pilih metode HTTP (GET, POST, PUT, dll.) dari menu tarik-turun dan masukkan URL endpoint API yang ingin Anda uji di bidang "URL" lalu klik bagian "Header" untuk membukanya.

- Anda biasanya akan melihat daftar header dengan bidang untuk "Nama" dan "Nilai".

- Untuk menambahkan header baru, cukup klik nama dan pilih nama dan jenis konten yang ingin Anda minta sebagai nilai. Misalnya,
Accept: application/json
berarti bahwa Anda ingin menerima data JSON dari server.


- Kirim permintaan Anda ke server dan Anda akan melihat respons dari server di bagian "Respons". Anda dapat memeriksa kode status, header respons, dan isi respons.

- Untuk memeriksa apakah server menghormati header HTTP accept Anda, lihat header "Content-Type" dalam respons. Seharusnya cocok dengan salah satu jenis konten yang Anda minta dalam permintaan. Misalnya, jika Anda meminta
Accept: application/json
, respons harus memilikiContent-Type: application/json
.

Praktik terbaik dan tips untuk menggunakan header HTTP accept.
Header HTTP accept adalah header permintaan yang menunjukkan jenis konten mana, yang dinyatakan sebagai jenis MIME, yang dapat dipahami oleh klien. Server menggunakan negosiasi konten untuk memilih salah satu proposal dan memberi tahu klien tentang pilihan tersebut dengan header respons Content-Type. Berikut adalah beberapa praktik terbaik dan tips untuk menggunakan header HTTP accept dalam proyek pengembangan web Anda:
- Gunakan sintaks nilai kualitas untuk menentukan urutan preferensi jenis konten. Misalnya,
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8
berarti bahwa klien lebih menyukai HTML, kemudian XHTML, kemudian XML, dan kemudian jenis lainnya. - Gunakan karakter wildcard (*) untuk menunjukkan bahwa klien dapat menerima subtipe atau jenis apa pun. Misalnya,
Accept: image/*
berarti bahwa klien dapat menerima format gambar apa pun, danAccept: */*
berarti bahwa klien dapat menerima jenis konten apa pun. - Bersikap spesifik tentang jenis konten yang dapat ditangani oleh klien, dan hindari penggunaan
Accept: */*
kecuali diperlukan. Ini dapat membantu server untuk mengirim format yang paling sesuai untuk klien, dan menghindari pengiriman data yang tidak perlu yang tidak dapat diproses oleh klien. - Uji header HTTP accept Anda dengan server web dan layanan web yang berbeda, dan periksa header respons Content-Type untuk melihat apakah server menghormati preferensi Anda. Anda dapat menggunakan alat seperti curl atau Apidog untuk mengirim permintaan HTTP khusus dan memeriksa header respons.
Kesimpulan
Dalam postingan ini, saya telah menjelaskan pentingnya header HTTP Accept dan bagaimana header ini dapat digunakan untuk menegosiasikan jenis konten antara klien dan server. Saya juga telah menunjukkan cara mengatur header Accept dalam berbagai skenario.
Dengan menggunakan header Accept, kita dapat memastikan bahwa server merespons dengan format yang paling sesuai untuk kebutuhan kita, dan menghindari konversi atau kesalahan yang tidak perlu. Header Accept adalah salah satu dari banyak header HTTP yang dapat membantu kita membangun aplikasi web yang lebih kuat dan efisien.