Obsah

    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ů.

    428 - Precondition Required

    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

    1. 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.');
          }
      });
    2. 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.')
    3. 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.