Serverantwort 428 Precondition Required
HTTP-Statuscode 428 (Precondition Required)
Der HTTP-Statuscode 428 wird verwendet, um anzuzeigen, dass der Server bestimmte Bedingungen erfüllt haben möchte, bevor er eine Anfrage ausführt. Dieser Code kann in verschiedenen Szenarien auftreten, insbesondere bei der Interaktion mit APIs, wo es wichtig ist, vorherige Zustände von Ressourcen zu berücksichtigen.
Beispiele für die Verwendung des Status 428
-
Änderung von Ressourcen
Ein Beispiel: Ein Client versucht, eine Ressource zu aktualisieren, hat jedoch keine Bedingungen angegeben, unter denen diese Aktualisierung erfolgen soll.
Erklärung: Der Server kann die Anfrage ablehnen, wenn der Client nicht die notwendigen Bedingungen bereitstellt, z.B. wenn die Ressource von einem anderen Client geändert wurde.
-
Versionskontrolle
Ein Beispiel: Bei dem Versuch, eine Ressource zu löschen oder zu ändern, muss der Client angeben, dass er mit der aktuellen Version der Ressource arbeitet (z.B. unter Verwendung des Headers If-Match).
Erklärung: Der Status 428 kann zurückgegeben werden, wenn der Client den erforderlichen Header zur Überprüfung der Ressourcen-Version nicht angegeben hat.
-
Caching und Zustände
Ein Beispiel: Ein Client fordert Daten an, die möglicherweise geändert wurden, gibt jedoch nicht an, dass er nur mit aktuellen Daten arbeiten möchte (z.B. Header If-None-Match).
Erklärung: Der Server kann Bedingungen verlangen, um die Bereitstellung veralteter Informationen zu vermeiden.
Praktische Beispiele zur Fehlerbehebung bei Status 428
Programmiersprache | Beispielcode |
---|---|
JavaScript (Fetch API) |
const url = 'https://api.example.com/resource'; const headers = new Headers({ 'If-Match': 'etag_value' // ETag zur Versionsprüfung angeben }); fetch(url, { method: 'PUT', headers: headers, body: JSON.stringify({ data: 'new data' }) }) .then(response => { if (response.status === 428) { console.error('Bedingungen für die Anfrage erforderlich.'); } }); |
Python (requests) |
import requests url = 'https://api.example.com/resource' headers = { 'If-Match': 'etag_value' # ETag zur Versionsprüfung angeben } response = requests.put(url, headers=headers, json={'data': 'new data'}) if response.status_code == 428: print('Bedingungen für die Anfrage erforderlich.') |
PHP |
$url = 'https://api.example.com/resource'; $options = [ 'http' => [ 'header' => "If-Match: etag_value\r\n", // ETag zur Versionsprüfung angeben '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 'Bedingungen für die Anfrage erforderlich.'; } |
Zusammenfassend ist der HTTP-Statuscode 428 ein wichtiger Bestandteil der API-Kommunikation, insbesondere in Szenarien, in denen Änderungen an Ressourcen vorgenommen werden. Durch die Angabe der notwendigen Bedingungen in den Anfragen können Clients sicherstellen, dass sie mit der richtigen Version von Ressourcen arbeiten und unerwartete Fehler vermeiden.