Anda sedang berintegrasi dengan API baru. Anda dengan hati-hati membuat permintaan JSON dengan semua data yang benar, mengirimkannya, dan alih-alih respons sukses yang Anda harapkan, Anda mendapatkan kesalahan yang membuat frustrasi: 415 Unsupported Media Type. Anda memeriksa ulang otentikasi Anda, URL endpoint Anda, payload data Anda—semuanya tampak benar. Jadi, apa yang salah?
Masalahnya kemungkinan bukan pada apa yang Anda kirim, tetapi pada bagaimana Anda memberitahu server apa yang Anda kirim. Kode status umum namun sering membingungkan ini adalah tentang kerusakan komunikasi dalam format data.
Kesalahan 415 adalah cara server mengatakan, "Saya mengerti Anda mencoba mengirim data kepada saya, tetapi saya tidak memahami bahasa ini. Saya mengharapkan Anda mengirimkannya dalam format berbeda yang benar-benar dapat saya proses."
Jika Anda seorang pengembang yang bekerja dengan API—baik membangunnya maupun mengonsumsinya—memahami kode status 415 sangat penting untuk integrasi yang lancar dan menghindari sesi debugging yang membuat frustrasi.
Dalam panduan terperinci ini, kita akan menjelajahi apa arti kode status 415 Unsupported Media Type, mengapa itu terjadi, skenario umum, dan cara praktis untuk memperbaikinya atau menghindarinya. Baik Anda seorang pengembang yang berurusan dengan integrasi API atau ingin tahu tentang cara kerja komunikasi web, postingan ini akan membantu Anda menguasai kesalahan 415.
button
Baiklah, mari kita selami dan hilangkan kebingungan seputar HTTP 415 sekali untuk selamanya.
Masalah: Berbicara Bahasa Server
Bayangkan Anda mengirim surat kepada seseorang yang hanya membaca bahasa Prancis. Anda bisa menulis surat bahasa Inggris yang paling fasih dan terstruktur sempurna, tetapi jika penerima tidak mengerti bahasa Inggris, pesan Anda akan sia-sia. Kesalahan 415 adalah padanan digital dari skenario ini.
Server web sering kali dibangun untuk memahami format data tertentu. Mereka perlu tahu "bahasa" apa yang digunakan dalam data yang masuk agar dapat mengurai dan memprosesnya dengan benar. Header Content-Type adalah cara klien memberitahu server dalam format apa data tersebut.
Apa Sebenarnya Arti HTTP 415 Unsupported Media Type?
Kode status 415 Unsupported Media Type menunjukkan bahwa server memahami permintaan, tetapi menolak untuk menerimanya karena format payload (jenis media) berada dalam format yang tidak didukung oleh server untuk sumber daya yang diminta.
Secara lebih sederhana, klien Anda (seperti Postman, Apidog, atau browser Anda) mengirim data dalam format yang tidak dipahami atau tidak dikonfigurasi untuk diproses oleh server.
Server pada dasarnya mengatakan: "Saya menerima data Anda, tetapi saya tidak dapat memprosesnya karena dalam format yang tidak saya pahami atau dukung untuk endpoint tertentu ini."
Respons 415 yang umum terlihat seperti ini:
HTTP/1.1 415 Unsupported Media TypeContent-Type: application/json
{
"error": "Unsupported Media Type",
"message": "The request payload format is not supported.",
"supported_types": ["application/json", "application/xml"]
}
Ini memberitahu Anda, “Hei! Saya menerima permintaan Anda, tetapi saya tidak dapat memproses jenis konten ini.”
Ini paling sering berkaitan dengan nilai header Content-Type dalam permintaan HTTP yang menentukan format data yang dikirim (seperti JSON, XML, atau data formulir multipart). Beberapa server mungkin memberikan informasi yang lebih membantu tentang format apa yang mereka dukung, sementara yang lain mungkin mengembalikan pesan kesalahan yang lebih umum.
Pembahasan Mendalam: Definisi Teknis (untuk yang Penasaran)
Menurut spesifikasi HTTP/1.1 (RFC 7231), Bagian 6.5.13 mendefinisikan kode status 415 sebagai:
“Kode status 415 (Unsupported Media Type) menunjukkan bahwa server asal menolak untuk melayani permintaan karena payload berada dalam format yang tidak didukung oleh metode ini pada sumber daya target.”
Poin utamanya di sini:
- Masalahnya terletak pada jenis media, bukan pada data itu sendiri.
- Server tahu apa yang Anda coba kirim—hanya saja tidak dapat memprosesnya.
Inti Masalah: Header Content-Type
Header Content-Type adalah informasi penting yang menentukan apakah Anda akan mendapatkan kesalahan 415 atau respons yang berhasil. Header ini memberitahu server jenis data apa yang Anda kirim dalam body permintaan.
Berikut adalah jenis konten paling umum yang akan Anda temui:
Nilai Content-Type Umum:
Untuk API JSON:
application/json- Standar untuk sebagian besar API REST modernapplication/json; charset=utf-8- JSON dengan pengkodean karakter eksplisit
Untuk Data Formulir:
application/x-www-form-urlencoded- Format pengiriman formulir HTML tradisionalmultipart/form-data- Digunakan untuk unggahan file dan formulir dengan file
Untuk XML:
application/xml- Format XML standartext/xml- Format XML alternatif
Untuk Teks Polos:
text/plain- Konten teks sederhanatext/html- Konten HTML
Bagaimana Kesalahan 415 Terjadi: Penjelasan Langkah-demi-Langkah
Mari kita telusuri dengan tepat apa yang terjadi ketika kesalahan 415 muncul.
Langkah 1: Klien Mengirim Permintaan
Aplikasi klien mengirimkan permintaan ke endpoint API server. Misalnya, katakanlah kita mencoba membuat pengguna baru:
POST /api/users HTTP/1.1Host: api.example.comContent-Type: application/xmlContent-Length: 125
<user><name>John Doe</name><email>john@example.com</email></user>
Langkah 2: Server Memeriksa Content-Type
Server menerima permintaan dan memeriksa header Content-Type. Server melihat application/xml dan memeriksa konfigurasinya untuk endpoint /api/users.
Langkah 3: Server Menyadari Masalah
Endpoint /api/users server dikonfigurasi untuk hanya menerima application/json. Server tidak memiliki parser XML yang diatur untuk endpoint ini, dan tidak tahu cara menangani data yang masuk.
Langkah 4: Respons 415
Alih-alih mencoba memproses data yang salah format (yang dapat menyebabkan kesalahan atau masalah keamanan), server merespons dengan kode status 415 Unsupported Media Type.
Langkah 5: Klien Menerima Kesalahan
Aplikasi klien menerima respons 415 dan perlu menanganinya dengan tepat—biasanya dengan mengoreksi header Content-Type dan mengirim ulang permintaan.
Skenario Umum di Mana Anda Mungkin Menemui 415
1. Mengunggah File di API
Jika Anda mencoba mengunggah gambar menggunakan application/json alih-alih multipart/form-data, server tidak akan memahami konten file tersebut.
2. API Kustom dengan Validasi Ketat
API dengan validasi skema yang ketat menolak setiap permintaan yang tidak sesuai dengan aturan mereka.
3. Aplikasi Seluler Menggunakan SDK Usang
Terkadang SDK lama mengirim permintaan dengan header usang, yang tidak lagi didukung oleh API modern.
4. Permintaan Lintas Asal (Masalah CORS)
Konfigurasi CORS tertentu dapat membatasi jenis konten yang diterima, secara tidak langsung menyebabkan respons 415.
Peran Header Content-Type
Header Content-Type dalam permintaan HTTP memberitahu server jenis data apa yang dikirim oleh klien.
Misalnya:
application/jsonuntuk payload JSON.text/xmluntuk data XML.multipart/form-datauntuk unggahan file.
Jika header ini hilang atau menyatakan sesuatu yang tidak dapat ditangani server, kemungkinan besar Anda akan melihat respons 415.
Skenario Dunia Nyata yang Menyebabkan Kesalahan 415
Skenario 1: Header Content-Type Hilang
POST /api/users HTTP/1.1Host: api.example.com
{"name": "John Doe", "email": "john@example.com"}
Banyak server akan menolak ini karena tidak ada header Content-Type yang memberitahu mereka cara menafsirkan data.
Skenario 2: Content-Type yang Salah untuk Data
POST /api/users HTTP/1.1Host: api.example.comContent-Type: application/x-www-form-urlencoded
{"name": "John Doe", "email": "john@example.com"}
Header menyatakan itu adalah data formulir, tetapi body-nya adalah JSON. Ketidakcocokan ini membingungkan server.
Skenario 3: Server Tidak Mendukung Format
POST /api/users HTTP/1.1Host: api.example.comContent-Type: application/xml
<user><name>John</name></user>
Server mungkin hanya mendukung JSON untuk endpoint ini, meskipun XML-nya sudah terbentuk dengan baik.
Menguji Penanganan Content-Type dengan Apidog

Mari kita bahas bagaimana Apidog dapat membuat hidup Anda lebih mudah saat berurusan dengan kesalahan-kesalahan ini. Menguji berbagai jenis konten dan memastikan API Anda menanganinya dengan benar adalah di mana Apidog unggul. Ini membuatnya sangat mudah untuk menguji skenario ini tanpa menulis kode yang rumit.
Dengan Apidog, Anda dapat:
- Atur Header Content-Type dengan Mudah: Gunakan antarmuka intuitif Apidog untuk memilih dari jenis konten umum atau menentukan yang kustom.
- Uji Berbagai Format: Uji endpoint yang sama dengan cepat menggunakan jenis konten yang berbeda (JSON, XML, data formulir) untuk melihat bagaimana server Anda merespons.
- Validasi Respons Kesalahan: Pastikan API Anda mengembalikan respons
415yang tepat dengan pesan kesalahan yang membantu saat menerima format yang tidak didukung. - Uji Kasus Batas: Bereksperimenlah dengan jenis konten yang salah format, header yang hilang, atau data yang tidak cocok untuk memastikan API Anda menanganinya dengan baik.
- Otomatiskan Pengujian Content-Type: Buat suite pengujian yang secara otomatis memverifikasi API Anda dengan benar menerima format yang didukung dan menolak format yang tidak didukung dengan benar.
button
Misalnya, saat Anda menyiapkan permintaan POST di Apidog, ia secara otomatis menerapkan Content-Type yang benar berdasarkan jenis body permintaan Anda (JSON, XML, form-data, dll.).
Itu berarti lebih sedikit kejutan dan tidak ada lagi kesalahan 415 yang merusak sesi pengujian Anda. Pengujian proaktif ini dapat menghemat waktu debugging dan memastikan API Anda berperilaku dapat diprediksi.
415 vs. Kesalahan 4xx Lainnya: Mengetahui Perbedaannya
Penting untuk membedakan 415 dari kesalahan klien lainnya:
400 Bad Request: Permintaan salah format atau memiliki kesalahan sintaks, terlepas dari jenis konten.415 Unsupported Media Type: Permintaan sudah terbentuk dengan baik, tetapi dalam format yang tidak didukung server untuk endpoint ini.406 Not Acceptable: Kebalikan dari415—klien tidak dapat menerima format respons yang ingin dikirim server.
Praktik Terbaik untuk Menangani Kesalahan 415
Untuk Konsumen API (Pengembang Klien):
- Selalu atur header Content-Type yang benar yang sesuai dengan format body permintaan Anda.
- Periksa dokumentasi API untuk melihat jenis media apa yang didukung untuk setiap endpoint.
- Tangani kesalahan 415 dengan baik dalam kode Anda—jangan berasumsi server akan menerima format apa pun yang Anda kirim.
- Sediakan perilaku fallback jika memungkinkan, seperti mengonversi data Anda ke format yang didukung.
Untuk Penyedia API (Pengembang Server):
- Jelaskan secara eksplisit jenis media yang didukung dalam dokumentasi API Anda.
- Kembalikan pesan kesalahan yang membantu yang menunjukkan jenis media apa yang Anda dukung.
- Pertimbangkan untuk mendukung beberapa format jika masuk akal untuk API Anda (misalnya, JSON dan XML).
- Gunakan kode status HTTP yang tepat—jangan gunakan
400ketika maksud Anda415.
Contoh Respons 415 yang Dirancang dengan Baik:
HTTP/1.1 415 Unsupported Media TypeContent-Type: application/json
{
"error": "unsupported_media_type",
"message": "This endpoint only accepts application/json payloads.",
"supported_types": ["application/json"],
"documentation": "<https://api.example.com/docs/content-types>"
}
Kesalahan Content-Type Umum yang Menyebabkan 415
Berikut adalah beberapa kesalahan yang sering dilakukan pengembang:
| Kesalahan | Deskripsi | Contoh |
|---|---|---|
| Menggunakan nama header yang salah | Kesalahan ketik atau masalah kapitalisasi | contenttype alih-alih Content-Type |
| Mengirim data formulir alih-alih JSON | Server hanya mengharapkan JSON | application/x-www-form-urlencoded |
| Melupakan charset | Informasi pengkodean hilang | application/json; charset=utf-8 |
| Mengirim body kosong | Payload yang diperlukan hilang | POST /api tanpa data |
| Menggunakan jenis file yang tidak didukung | Format unggahan yang salah | Mengunggah .exe alih-alih .png |
Perbaikan Umum untuk Kesalahan 415
Jika Anda mengalami kesalahan 415, berikut adalah solusi paling umum:
Tambahkan Header Content-Type yang Hilang:
POST /api/users HTTP/1.1Content-Type: application/json
Koreksi Header Content-Type:
# Before (wrong):
Content-Type: text/plain
# After (correct):
Content-Type: application/json
Konversi Data Anda ke Format yang Didukung:
Jika server hanya menerima JSON, pastikan Anda mengirim JSON yang benar, bukan XML atau data formulir.
Periksa Kesalahan Ketik:
# Wrong:
Content-Type: application/jason
# Correct:
Content-Type: application/json
Pertimbangan Lanjutan
Negosiasi Konten
Beberapa API canggih mendukung negosiasi konten, di mana klien dapat menentukan format apa yang dapat diterimanya menggunakan header Accept:
GET /api/users/123 HTTP/1.1Accept: application/json, application/xml;q=0.9
Ini memberitahu server "Saya lebih suka JSON, tetapi saya bisa menerima XML jika perlu."
Parameter Charset
Untuk format berbasis teks, Anda mungkin perlu menentukan pengkodean karakter:
Content-Type: application/json; charset=utf-8
Kesimpulan: Pentingnya Komunikasi yang Jelas
Kode status HTTP 415 Unsupported Media Type menyoroti aspek fundamental komunikasi web: kedua belah pihak perlu menyepakati "bahasa" yang mereka gunakan untuk bertukar data. Tidak cukup hanya mengirim data yang benar—Anda harus mengirimkannya dalam format yang benar dan mengumumkan dengan tepat format tersebut.
HTTP 415 Unsupported Media Type adalah bagian penting dalam memastikan bahwa server hanya memproses format data yang diharapkan dan kompatibel. Penanganan header Content-Type yang benar, mengikuti spesifikasi API, dan pengujian dengan alat seperti Apidog dapat secara drastis mengurangi kesalahan ini.
Memahami dan menangani kesalahan 415 dengan benar akan membuat Anda menjadi konsumen API yang lebih efektif dan perancang API yang lebih baik. Dengan memperhatikan jenis konten dan menyediakan komunikasi yang jelas antara klien dan server, Anda dapat menghindari kesalahan yang membuat frustrasi ini dan membangun integrasi yang lebih kuat. Ingat, API berkembang pesat berkat komunikasi yang jelas antara klien dan server. Jika mereka berbicara "bahasa" yang sama (dalam hal ini, jenis media), semuanya berjalan lancar.
Jadi, lain kali Anda menemui kesalahan 415, ingatlah bahwa itu bukan kegagalan server yang rumit—itu adalah masalah komunikasi sederhana yang biasanya mudah diperbaiki. Dan saat Anda membangun atau menguji API, menggunakan alat seperti Apidog akan membantu Anda memastikan bahwa jenis konten Anda selalu benar, mencegah kesalahan ini sebelum terjadi.
button
