Odpověď serveru 428 Precondition Required
HTTP status kód 428 (Precondition Required)
HTTP status kód 428 se používá k označení, že server vyžaduje splnění určitých podmínek před provedením požadavku. Tento kód se může objevit v různých situacích, zejména při interakci s API, kde je důležité zohlednit předchozí stavy zdrojů.
Příklady použití a vzniku statusu 428
-
Situace se změnou zdrojů
Příklad: Klient se pokouší aktualizovat zdroj, ale předem neuvedl podmínky, za kterých by se tato aktualizace měla uskutečnit.
Vysvětlení: Server může odmítnout provedení požadavku, pokud klient neposkytne nezbytné podmínky, například pokud byl zdroj změněn jiným klientem.
-
Kontrola verzí
Příklad: Při pokusu o odstranění nebo změnu zdroje musí klient uvést, že pracuje s aktuální verzí zdroje (například použitím hlavičky If-Match).
Vysvětlení: Status 428 může být vrácen, pokud klient neuvedl hlavičku potřebnou k ověření verze zdroje.
-
Mezipaměť a stavy
Příklad: Klient požaduje data, která mohou být změněna, ale neuvádí, že je připraven pracovat pouze s aktuálními daty (například pomocí hlavičky If-None-Match).
Vysvětlení: Server může požadovat podmínky, aby se vyhnul poskytnutí zastaralých informací.
Praktické příklady opravy chyby 428 v různých programovacích jazycích
-
JavaScript (s použitím Fetch API)
const url = 'https://api.example.com/resource'; const headers = new Headers({ 'If-Match': 'etag_value' // Uveďte ETag pro kontrolu verze }); fetch(url, { method: 'PUT', headers: headers, body: JSON.stringify({ data: 'new data' }) }) .then(response => { if (response.status === 428) { console.error('Nezbytné podmínky pro provedení požadavku.'); } });
-
Python (s použitím requests)
import requests url = 'https://api.example.com/resource' headers = { 'If-Match': 'etag_value' # Uveďte ETag pro kontrolu verze } response = requests.put(url, headers=headers, json={'data': 'new data'}) if response.status_code == 428: print('Nezbytné podmínky pro provedení požadavku.')
-
PHP
$url = 'https://api.example.com/resource'; $options = [ 'http' => [ 'header' => "If-Match: etag_value\r\n", // Uveďte ETag pro kontrolu verze '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 'Nezbytné podmínky pro provedení požadavku.'; }
Tabulka shrnující situace pro status 428
Situace | Příklad | Podmínka |
---|---|---|
Změna zdrojů | Aktualizace bez podmínek | Podmínky pro aktualizaci |
Kontrola verzí | Odstranění bez If-Match | Hlavička If-Match |
Mezipaměť a stavy | Požadavek na zastaralá data | Hlavička If-None-Match |
Tímto způsobem může klient správně reagovat na status 428 a poskytnout potřebné podmínky pro úspěšné splnění požadavku. Důležité je, aby programátoři porozuměli výzvám spojeným s tímto kódem a implementovali správné logiky ve svých aplikacích.