Sunucu yanıtı 428 Precondition Required
HTTP Durum Kodu 428 (Ön Koşul Gerekiyor)
HTTP durum kodu 428, sunucunun bir isteği gerçekleştirmeden önce belirli koşulların yerine getirilmesini talep ettiğini belirtir. Bu kod, API ile etkileşim sırasında ortaya çıkabilir ve kaynakların önceki durumlarını dikkate almak önemlidir.
Kullanım Örnekleri ve Durumları
HTTP 428 durum kodunun ortaya çıkabileceği bazı durumlar aşağıda açıklanmıştır:
-
Kaynak Değişikliği Durumu
- Örnek: Müşteri bir kaynağı güncellemeye çalışıyor, fakat bu güncellemenin gerçekleşmesi için gerekli koşulları belirtmiyor.
- Açıklama: Sunucu, müşteri gerekli koşulları sağlamadığında isteği yerine getirmeyebilir. Örneğin, kaynak başka bir müşteri tarafından değiştirilmişse, güncelleme yapılmayabilir.
-
Sürüm Kontrolü
- Örnek: Müşteri bir kaynağı silmeye veya değiştirmeye çalışırken, geçerli sürümle çalıştığını belirten bir başlık (örneğin, If-Match) sağlamalıdır.
- Açıklama: Müşteri gerekli başlığı sağlamadığında, durum kodu 428 dönebilir.
-
Önbellekleme ve Durumlar
- Örnek: Müşteri değiştirilebilecek verileri talep ediyor ancak yalnızca geçerli verilerle çalışmaya hazır olduğunu belirtmiyor (örneğin, If-None-Match başlığı).
- Açıklama: Sunucu, güncel olmayan bilgilerin sağlanmasını önlemek için koşul talep edebilir.
HTTP 428 Hatasını Düzeltme Yöntemleri
Aşağıda, farklı programlama dillerinde HTTP 428 hatasını düzeltmek için örnekler verilmiştir:
Dil | Örnek Kod |
---|---|
JavaScript (Fetch API) |
const url = 'https://api.example.com/resource'; const headers = new Headers({ 'If-Match': 'etag_value' // Sürüm kontrolü için ETag belirtin }); fetch(url, { method: 'PUT', headers: headers, body: JSON.stringify({ data: 'new data' }) }) .then(response => { if (response.status === 428) { console.error('İsteği gerçekleştirmek için koşullar gereklidir.'); } }); |
Python (requests kullanarak) |
import requests url = 'https://api.example.com/resource' headers = { 'If-Match': 'etag_value' # Sürüm kontrolü için ETag belirtin } response = requests.put(url, headers=headers, json={'data': 'new data'}) if response.status_code == 428: print('İsteği gerçekleştirmek için koşullar gereklidir.') |
PHP |
$url = 'https://api.example.com/resource'; $options = [ 'http' => [ 'header' => "If-Match: etag_value\r\n", // Sürüm kontrolü için ETag belirtin 'method' => 'PUT', 'content' => json_encode(['data' => 'new data']), ], ]; $context = stream_context_create($options); $result = file_get_contents($url, false, $context); if ($http_response_header[0] === 'HTTP/1.1 428 Precondition Required') { echo 'İsteği gerçekleştirmek için koşullar gereklidir.'; } |
HTTP durum kodu 428, istemci ve sunucu arasındaki etkileşimlerde önemli bir rol oynamaktadır. İstemcilerin, sunucunun gerektirdiği ön koşulları sağladıklarından emin olmaları, isteklerinin başarılı bir şekilde gerçekleştirilmesi için kritik öneme sahiptir.