Sunucu yanıtı 422 Unprocessable Entity
HTTP Durum Kodu 422 (İşlenemez Varlık)
HTTP durum kodu 422, sunucunun isteğin içeriğini anladığını ancak semantik hatalar nedeniyle işleyemediğini belirten bir koddur. Bu makalede, 422 durum kodunu ayrıntılı bir şekilde inceleyecek, kullanım alanlarını ve farklı programlama dillerinde hata düzeltme yöntemlerini ele alacağız.
Durum Kodu 422'nin Anlamı ve Uygulama Alanları
Durum kodu 422, istemciden gelen verilerin sunucu tarafından anlaşıldığını ancak işlenemediğini belirtir. Bu durum genellikle aşağıdaki koşullarda meydana gelir:
- Yanlış veri formatı: İstenilen formatın dışında verilerin gönderilmesi.
- Zorunlu alanların eksikliği: İstekte yer alması gereken ancak bulunmayan alanlar.
- Desteklenmeyen değerler: Alanlarda geçerli olmayan veya beklenmeyen değerlerin bulunması.
Pratik Örnekler
Örnek 1: Form Doğrulama Hatası
Bir istemci, bir form aracılığıyla veri gönderdiğinde, sunucu bu verileri doğrulamalıdır. Eğer formda hatalı veya eksik bilgiler varsa, sunucu 422 durumu ile yanıt verebilir.
Örnek senaryo:
- Kullanıcı, formu doldurur ve gönderir.
- Sunucu, gönderilen verileri kontrol eder.
- Sunucu, gerekli alanların eksik olduğunu tespit eder ve 422 ile birlikte hata mesajı döner.
Örnek 2: API Veri İşleme
Bir API aracılığıyla sunucuya veri gönderildiğinde, sunucu verileri işleyemediğinde 422 kodunu dönebilir. Bu, gelen verilerdeki hatalardan kaynaklanabilir.
Örnek senaryo:
- İstemci, JSON formatında veri gönderir.
- Sunucu, verileri işlerken hatalı bir alan bulur.
- Sunucu, 422 durumu ve hatanın detaylarıyla birlikte yanıt verir.
Örnek 3: Dosya Yükleme
Kullanıcı, belirli bir formatta bir dosya yüklemeye çalıştığında, eğer dosya uygun değilse, sunucu 422 durumu ile yanıt verebilir.
Örnek senaryo:
- Kullanıcı, JPEG yerine PNG formatında bir dosya yüklemeye çalışır.
- Sunucu, dosya formatının desteklenmediğini belirtir ve 422 kodu ile yanıtlar.
Hataların Düzeltme Yöntemleri
JavaScript Üzerinde Düzeltme
Aşağıda, 422 hatasına neden olan basit bir örnek verilmiştir:
const formData = { name: "", email: "[email protected]" }; // Eksik alan
fetch('/submit', {
method: 'POST',
body: JSON.stringify(formData)
});
Bu hatayı düzeltmek için eksik alanların doldurulması gerekir:
const formData = { name: "John Doe", email: "[email protected]" }; // Doğru veri
fetch('/submit', {
method: 'POST',
body: JSON.stringify(formData)
});
Python Üzerinde Düzeltme
Aşağıdaki örnek, yanlış bir istek yaratmaktadır:
data = {"name": "", "email": "[email protected]"} # Eksik alan
response = requests.post('http://api.example.com/submit', json=data)
Doğru bir doğrulama ile bu hatayı önlemek mümkündür:
data = {"name": "John Doe", "email": "[email protected]"} # Doğru veri
response = requests.post('http://api.example.com/submit', json=data)
PHP Üzerinde Düzeltme
Aşağıdaki örnek, hatalı bir API çağrısını göstermektedir:
$data = array("name" => "", "email" => "[email protected]"); // Eksik alan
$response = $client->post('http://api.example.com/submit', $data);
Doğru bir yapılandırma ile bu hatayı düzeltmek mümkündür:
$data = array("name" => "John Doe", "email" => "[email protected]"); // Doğru veri
$response = $client->post('http://api.example.com/submit', $data);
422 Hatasının Önlenmesi İçin Öneriler
- İstemci tarafında veri doğrulaması yapmak.
- API gereksinimlerinin net bir şekilde belgelenmesi.
- Hataların kaydedilmesi, teşhis sürecini kolaylaştırır.
Durum Kodu | Açıklama |
---|---|
422 | İstemci tarafından gönderilen veri anlaşıldı, ancak işlenemedi. |
400 | İstek hatalı, sunucu isteği anlayamadı. |
404 | İstenen kaynak bulunamadı. |