Yeni bir API ile entegrasyon yapıyorsunuz. Tüm doğru verilerle dikkatlice bir JSON isteği oluşturup gönderiyorsunuz ve beklediğiniz başarılı yanıt yerine sinir bozucu bir hata alıyorsunuz: 415 Desteklenmeyen Medya Türü. Kimlik doğrulamanızı, uç nokta URL'nizi, veri yükünüzü iki kez kontrol ediyorsunuz — her şey doğru görünüyor. Peki ne yanlış gitti?
Sorun muhtemelen gönderdiğiniz şeyle değil, sunucuya ne gönderdiğinizi nasıl bildirdiğinizle ilgili. Bu yaygın ama çoğu zaman kafa karıştırıcı durum kodu, veri formatındaki iletişim kopukluklarıyla ilgilidir.
415 hatası, sunucunun "Bana veri göndermeye çalıştığınızı anlıyorum, ancak bu dili konuşmuyorum. Onu gerçekten işleyebileceğim farklı bir formatta göndermenizi bekliyordum" deme şeklidir.
API'larla çalışan bir geliştiriciyseniz – ister API geliştiriyor ister tüketiyor olun – 415 durum kodunu anlamak, sorunsuz entegrasyonlar ve sinir bozucu hata ayıklama oturumlarından kaçınmak için çok önemlidir.
Bu ayrıntılı kılavuzda, 415 Desteklenmeyen Medya Türü durum kodunun ne anlama geldiğini, neden ortaya çıktığını, tipik senaryoları ve bunu düzeltmenin veya önlemenin pratik yollarını inceleyeceğiz. İster API entegrasyonlarıyla uğraşan bir geliştirici olun, ister web iletişiminin nasıl çalıştığını merak edin, bu gönderi 415 hatalarında ustalaşmanıza yardımcı olacaktır.
Pekala, hadi konuya dalalım ve HTTP 415 etrafındaki kafa karışıklığını bir kez ve herkes için giderelim.
Sorun: Sunucunun Dilini Konuşmak
Sadece Fransızca okuyan birine mektup gönderdiğinizi hayal edin. En etkileyici, mükemmel yapılandırılmış İngilizce mektubu yazabilirsiniz, ancak alıcı İngilizce anlamazsa, mesajınız işe yaramaz olacaktır. 415 hatası, bu senaryonun dijital karşılığıdır.
Web sunucuları genellikle belirli veri formatlarını anlayacak şekilde inşa edilir. Gelen verinin hangi "dilde" yazıldığını bilmeleri gerekir, böylece onu düzgün bir şekilde ayrıştırabilir ve işleyebilirler. Content-Type başlığı, istemcinin sunucuya verinin hangi formatta olduğunu bildirme şeklidir.
HTTP 415 Desteklenmeyen Medya Türü Gerçekten Ne Anlama Geliyor?
415 Desteklenmeyen Medya Türü durum kodu, sunucunun isteği anladığını, ancak yük formatının (medya türü) istenen kaynak için sunucu tarafından desteklenmeyen bir formatta olması nedeniyle isteği kabul etmeyi reddettiğini belirtir.
Daha basit bir ifadeyle, istemciniz (Postman, Apidog veya tarayıcınız gibi) sunucunun anlamadığı veya işlemeye yapılandırılmadığı bir formatta veri gönderiyor.
Sunucu esasen şunu söylüyor: "Verilerinizi aldım, ancak bu belirli uç nokta için anlamadığım veya desteklemediğim bir formatta olduğu için işleyemiyorum."
Tipik bir 415 yanıtı şöyle görünür:
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"]
}
Bu size şunu söyler: "Hey! İsteğinizi aldım, ancak bu içerik türünü işleyemiyorum."
Bu durum en yaygın olarak, gönderilen verinin formatını (JSON, XML veya çok parçalı form verileri gibi) belirten HTTP isteğindeki Content-Type başlığının değeriyle ilgilidir. Bazı sunucular hangi formatları destekledikleri hakkında daha faydalı bilgiler sağlayabilirken, diğerleri daha genel bir hata mesajı döndürebilir.
Derinlemesine İnceleme: Teknik Tanım (Meraklılar İçin)
HTTP/1.1 spesifikasyonuna (RFC 7231) göre, Bölüm 6.5.13, 415 durum kodunu şu şekilde tanımlar:
“415 (Desteklenmeyen Medya Türü) durum kodu, kaynak sunucunun, yükün hedef kaynak üzerindeki bu yöntem tarafından desteklenmeyen bir formatta olması nedeniyle isteğe hizmet vermeyi reddettiğini belirtir.”
Buradaki kilit nokta:
- Sorun, verinin kendisinde değil, medya türündedir.
- Sunucu ne göndermeye çalıştığınızı biliyor, sadece işleyemiyor.
Meselenin Özü: Content-Type Başlığı
Content-Type başlığı, 415 hatası mı yoksa başarılı bir yanıt mı alacağınızı belirleyen kritik bilgi parçasıdır. Bu başlık, sunucuya istek gövdesinde ne tür veri gönderdiğinizi söyler.
Karşılaşacağınız en yaygın içerik türleri şunlardır:
Yaygın Content-Type Değerleri:
JSON API'leri İçin:
application/json- Çoğu modern REST API için standartapplication/json; charset=utf-8- Açık karakter kodlamalı JSON
Form Verileri İçin:
application/x-www-form-urlencoded- Geleneksel HTML form gönderim formatımultipart/form-data- Dosya yüklemeleri ve dosyalı formlar için kullanılır
XML İçin:
application/xml- Standart XML formatıtext/xml- Alternatif XML formatı
Düz Metin İçin:
text/plain- Basit metin içeriğitext/html- HTML içeriği
415 Hatası Nasıl Oluşur: Adım Adım Açıklama
Bir 415 hatası oluştuğunda tam olarak ne olduğunu adım adım inceleyelim.
Adım 1: İstemci Bir İstek Gönderir
Bir istemci uygulaması, bir sunucu API uç noktasına istek gönderir. Örneğin, yeni bir kullanıcı oluşturmaya çalıştığımızı varsayalım:
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>
Adım 2: Sunucu Content-Type'ı Kontrol Eder
Sunucu isteği alır ve Content-Type başlığını inceler. application/xml olduğunu görür ve /api/users uç noktası için yapılandırmasını kontrol eder.
Adım 3: Sunucu Sorunu Fark Eder
Sunucunun /api/users uç noktası yalnızca application/json kabul edecek şekilde yapılandırılmıştır. Bu uç nokta için bir XML ayrıştırıcısı kurulu değildir ve gelen veriyi nasıl işleyeceğini bilmemektedir.
Adım 4: 415 Yanıtı
Yanlış biçimlendirilmiş veriyi işlemeye çalışmak (bu durum hatalara veya güvenlik sorunlarına yol açabilir) yerine, sunucu 415 Desteklenmeyen Medya Türü durum koduyla yanıt verir.
Adım 5: İstemci Hatayı Alır
İstemci uygulaması 415 yanıtını alır ve genellikle Content-Type başlığını düzelterek ve isteği yeniden göndererek uygun şekilde ele alması gerekir.
415 Hatasıyla Karşılaşabileceğiniz Yaygın Senaryolar
1. API'larda Dosya Yükleme
Bir görseli multipart/form-data yerine application/json kullanarak yüklemeye çalışırsanız, sunucu dosya içeriğini anlamayacaktır.
2. Katı Doğrulamaya Sahip Özel API'lar
Katı şema doğrulamasına sahip API'lar, kurallarına uymayan her isteği reddeder.
3. Güncel Olmayan SDK'ları Kullanan Mobil Uygulamalar
Bazen eski SDK'lar, modern API'ların artık desteklemediği güncel olmayan başlıklarla istek gönderir.
4. Çapraz Kaynak İstekleri (CORS Sorunları)
Bazı CORS yapılandırmaları, kabul edilen içerik türlerini kısıtlayabilir ve dolaylı olarak 415 yanıtına neden olabilir.
Content-Type Başlığının Rolü
HTTP isteklerindeki Content-Type başlığı, istemcinin sunucuya ne tür veri gönderdiğini bildirir.
Örneğin:
- JSON yükleri için
application/json. - XML verileri için
text/xml. - Dosya yüklemeleri için
multipart/form-data.
Bu başlık eksikse veya sunucunun işleyemeyeceği bir şey söylüyorsa, muhtemelen bir 415 yanıtı alırsınız.
415 Hatalarına Neden Olan Gerçek Dünya Senaryoları
Senaryo 1: Eksik Content-Type Başlığı
POST /api/users HTTP/1.1Host: api.example.com
{"name": "John Doe", "email": "john@example.com"}
Birçok sunucu bunu reddedecektir, çünkü veriyi nasıl yorumlayacaklarını söyleyen bir Content-Type başlığı yoktur.
Senaryo 2: Veri İçin Yanlış Content-Type
POST /api/users HTTP/1.1Host: api.example.comContent-Type: application/x-www-form-urlencoded
{"name": "John Doe", "email": "john@example.com"}
Başlık form verisi olduğunu söylüyor, ancak gövde JSON. Bu uyumsuzluk sunucuyu şaşırtır.
Senaryo 3: Sunucu Formatı Desteklemiyor
POST /api/users HTTP/1.1Host: api.example.comContent-Type: application/xml
<user><name>John</name></user>
Sunucu, XML iyi biçimlendirilmiş olsa bile bu uç nokta için yalnızca JSON'u destekleyebilir.
Apidog ile Content-Type İşlemesini Test Etme

Bu hatalarla uğraşırken Apidog'un hayatınızı nasıl kolaylaştırabileceğinden bahsedelim. Farklı içerik türlerini test etmek ve API'nizin bunları doğru şekilde işlediğinden emin olmak, Apidog'un parladığı noktadır. Bu senaryoları karmaşık kod yazmadan test etmeyi inanılmaz derecede kolaylaştırır.
Apidog ile şunları yapabilirsiniz:
- Content-Type Başlıklarını Kolayca Ayarlayın: Apidog'un sezgisel arayüzünü kullanarak yaygın içerik türlerinden seçim yapın veya özel olanları belirtin.
- Birden Çok Formatı Test Edin: Sunucunuzun nasıl yanıt verdiğini görmek için aynı uç noktayı farklı içerik türleriyle (JSON, XML, form verileri) hızlıca test edin.
- Hata Yanıtlarını Doğrulayın: API'nizin desteklenmeyen formatlar aldığında yardımcı hata mesajlarıyla doğru
415yanıtlarını döndürdüğünden emin olun. - Uç Durumları Test Edin: API'nizin bunları sorunsuz bir şekilde işlediğinden emin olmak için yanlış biçimlendirilmiş içerik türleri, eksik başlıklar veya uyumsuz verilerle deneyler yapın.
- Content-Type Testini Otomatikleştirin: API'nizin desteklenen formatları doğru bir şekilde kabul ettiğini ve desteklenmeyenleri uygun şekilde reddettiğini otomatik olarak doğrulayan test paketleri oluşturun.
Örneğin, Apidog'da bir POST isteği ayarladığınızda, istek gövdesi türünüze (JSON, XML, form verileri vb.) göre doğru Content-Type'ı otomatik olarak uygular.
Bu, daha az sürpriz ve test oturumlarınızı mahveden 415 hatalarının sona ermesi anlamına gelir. Bu proaktif test, saatlerce hata ayıklamadan tasarruf sağlayabilir ve API'nizin öngörülebilir şekilde davrandığından emin olabilir.
415 ve Diğer 4xx Hataları: Farkı Bilmek
415'i diğer istemci hatalarından ayırmak önemlidir:
400 Hatalı İstek: İstek, içerik türünden bağımsız olarak yanlış biçimlendirilmiş veya sözdizimi hataları içeriyor.415 Desteklenmeyen Medya Türü: İstek iyi biçimlendirilmiş, ancak sunucunun bu uç nokta için desteklemediği bir formatta.406 Kabul Edilemez:415'in tam tersi – istemci, sunucunun göndermek istediği yanıt formatını kabul edemiyor.
415 Hatalarını Yönetmek İçin En İyi Uygulamalar
API Tüketicileri İçin (İstemci Geliştiricileri):
- İstek gövdesi formatınızla eşleşen doğru Content-Type başlığını her zaman ayarlayın.
- Her uç nokta için hangi medya türlerinin desteklendiğini görmek için API dokümantasyonunu kontrol edin.
- Kodunuzda 415 hatalarını zarifçe ele alın – sunucunun gönderdiğiniz herhangi bir formatı kabul edeceğini varsaymayın.
- Mümkünse, verilerinizi desteklenen bir formata dönüştürmek gibi yedek davranış sağlayın.
API Sağlayıcıları İçin (Sunucu Geliştiricileri):
- API dokümantasyonunuzda desteklenen medya türleri hakkında açık olun.
- Desteklediğiniz medya türlerini belirten yardımcı hata mesajları döndürün.
- API'niz için mantıklıysa (örn. hem JSON hem de XML) birden çok formatı desteklemeyi düşünün.
- Doğru HTTP durum kodlarını kullanın –
415demek istediğinizde400kullanmayın.
İyi Tasarlanmış Bir 415 Yanıtı Örneği:
HTTP/1.1 415 Unsupported Media TypeContent-Type: application/json
{
"error": "unsupported_media_type",
"message": "Bu uç nokta yalnızca application/json yüklerini kabul eder.",
"supported_types": ["application/json"],
"documentation": "<https://api.example.com/docs/content-types>"
}
415'e Neden Olan Yaygın Content-Type Hataları
İşte geliştiricilerin sıkça düştüğü bazı tuzaklar:
| Hata | Açıklama | Örnek |
|---|---|---|
| Yanlış başlık adı kullanma | Yazım hatası veya büyük/küçük harf sorunu | contenttype yerine Content-Type |
| JSON yerine form verisi gönderme | Sunucu yalnızca JSON bekliyor | application/x-www-form-urlencoded |
| Karakter setini unutma | Eksik kodlama bilgisi | application/json; charset=utf-8 |
| Boş gövde gönderme | Gerekli yük eksik | Veri olmadan POST /api |
| Desteklenmeyen dosya türleri kullanma | Yanlış yükleme formatı | .png yerine .exe yükleme |
Bunlar küçük görünebilir ancak büyük istek hatalarına neden olabilir.
415 Hataları İçin Yaygın Düzeltmeler
Bir 415 hatasıyla karşılaşıyorsanız, işte en yaygın çözümler:
Eksik Content-Type Başlığını Ekleyin:
POST /api/users HTTP/1.1Content-Type: application/json
Content-Type Başlığını Düzeltin:
# Önce (yanlış):
Content-Type: text/plain
# Sonra (doğru):
Content-Type: application/json
Verilerinizi Desteklenen Bir Formata Dönüştürün:
Sunucu yalnızca JSON kabul ediyorsa, XML veya form verileri değil, düzgün JSON gönderdiğinizden emin olun.
Yazım Hatalarını Kontrol Edin:
# Yanlış:
Content-Type: application/jason
# Doğru:
Content-Type: application/json
Gelişmiş Hususlar
İçerik Uzlaşması (Content Negotiation)
Bazı gelişmiş API'ler, istemcinin Accept başlığını kullanarak hangi formatları kabul edebileceğini belirtebildiği içerik uzlaşmasını destekler:
GET /api/users/123 HTTP/1.1Accept: application/json, application/xml;q=0.9
Bu, sunucuya "JSON'u tercih ederim, ancak gerekirse XML'i de kabul edebilirim" der.
Karakter Seti Parametresi
Metin tabanlı formatlar için karakter kodlamasını belirtmeniz gerekebilir:
Content-Type: application/json; charset=utf-8
Sonuç: Açık İletişimin Önemi
HTTP 415 Desteklenmeyen Medya Türü durum kodu, web iletişiminin temel bir yönünü vurgular: her iki tarafın da veri alışverişi için kullandıkları "dil" üzerinde anlaşması gerekir. Doğru veriyi göndermek yeterli değildir; onu doğru formatta göndermeli ve o formatın ne olduğunu doğru bir şekilde bildirmelisiniz.
HTTP 415 Desteklenmeyen Medya Türü, sunucuların yalnızca beklenen ve uyumlu veri formatlarını işlemesini sağlamanın önemli bir parçasıdır. Content-Type başlıklarını doğru şekilde işlemek, API spesifikasyonlarına uymak ve Apidog gibi araçlarla test yapmak bu hataları önemli ölçüde azaltabilir.
415 hatalarını anlamak ve doğru şekilde ele almak, sizi daha etkili bir API tüketicisi ve daha iyi bir API tasarımcısı yapacaktır. İçerik türlerine dikkat ederek ve istemciler ile sunucular arasında açık iletişim sağlayarak, bu sinir bozucu hatalardan kaçınabilir ve daha sağlam entegrasyonlar oluşturabilirsiniz. Unutmayın, API'ler istemci ve sunucu arasındaki açık iletişimle gelişir. Eğer aynı "dili" (bu durumda medya türü) konuşurlarsa, her şey sorunsuz çalışır.
Bu yüzden bir dahaki sefere bir 415 hatasıyla karşılaştığınızda, bunun karmaşık bir sunucu hatası olmadığını, genellikle düzeltilmesi kolay basit bir iletişim sorunu olduğunu unutmayın. Ve API'ler geliştirirken veya test ederken, Apidog gibi bir araç kullanmak, içerik türlerinizin her zaman doğru olduğundan emin olmanıza yardımcı olacak ve bu hataları ortaya çıkmadan önleyecektir.
