Obsah

    Odpověď serveru 422 Unprocessable Entity

    HTTP Status Kód 422 (Unprocessable Entity)

    Status kód 422 (Unprocessable Entity) je kód, který indikuje, že server rozumí obsahu požadavku, ale nemůže jej zpracovat kvůli semantickým chybám. Tento kód je často využíván ve webových aplikacích, kde je důležité validovat vstupní data před jejich zpracováním.

    422 - Unprocessable Entity

    Definice a použití status kódu 422

    Co znamená status kód 422?

    Status kód 422 se používá, když server rozpozná syntaktické správnost dat, ale zjistí, že data mají nesprávný význam, což znemožňuje jejich zpracování. Tento kód je důležitým nástrojem pro efektivní diagnostiku problémů s daty zaslanými na server.

    Situace, ve kterých může vzniknout chyba:

    • Nesprávný formát dat: Například, když číselné hodnoty jsou zaslány jako text.
    • Absence povinných polí: Když některé nezbytné informace chybí v požadavku.
    • Nepodporované hodnoty v polích: Když jsou zaslány hodnoty, které server neakceptuje.

    Praktické příklady použití status kódu 422

    Příklad 1: Chyba validace formuláře

    Když klient odešle data formuláře, server může vrátit odpověď s kódem 422, pokud jsou data nesprávná. Například, pokud je očekáván e-mail a je zaslán text bez "@" symbolu, server odpoví s kódem 422 a uvede chyby.

    Příklad 2: Zpracování dat API

    Pokud server nemůže zpracovat příchozí data, jako je například chybějící parametr v API, může vrátit odpověď s kódem 422. Server obvykle přiloží konkrétní chyby k odpovědi, aby klient mohl provést potřebné úpravy.

    Příklad 3: Práce se soubory

    Při pokusu o nahrání souboru se nesprávným formátem (např. pokus o nahrání souboru .exe místo .jpg) server vrátí kód 422 s vysvětlením, proč soubor nebyl přijat.

    Oprava chyb vyvolávajících status kód 422

    Oprava v jazyce JavaScript

    Příklad kódu, který vyvolává chybu 422:

    
    const data = { email: "invalidEmailFormat" };
    fetch('/api/submit', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    }).then(response => {
        if (response.status === 422) {
            console.log("Chyba v datech.");
        }
    });
    

    Jak změnit kód pro správné zpracování dat? Je důležité implementovat validaci na straně klienta před odesláním dat na server.

    Oprava v jazyce Python

    Příklad nekorektního požadavku:

    
    response = requests.post('/api/resource', json={"name": ""})
    if response.status_code == 422:
        print("Data nejsou platná.")
    

    Jak použít validaci dat pro prevenci chyby? Použijte knihovny jako pydantic pro zajištění správnosti dat před odesláním.

    Oprava v jazyce PHP

    Příklad volání API s chybnými daty:

    
    $data = ["username" => ""];
    $response = $client->post('/api/user', ['json' => $data]);
    if ($response->getStatusCode() == 422) {
        echo "Chyba v datech.";
    }
    

    Jak nastavit server pro správné zpracování příchozích dat? Implementujte robustní validační logiku, abyste zajistili, že všechny vstupy splňují požadované standardy.

    Doporučení pro prevenci vzniku status kódu 422

    • Validace dat na straně klienta: Zajistěte, aby uživatelská rozhraní prováděla kontrolu správnosti dat před odesláním.
    • Jasná dokumentace požadavků k API: Ujistěte se, že všechny specifikace a očekávání jsou dobře zdokumentovány.
    • Logování chyb pro usnadnění diagnostiky: Implementujte systém pro sledování a logování chyb, což usnadní identifikaci problémů.
    Typ chyby Příklad Odpověď serveru
    Nesprávný formát dat Email bez '@' 422 - Chyba: Neplatný email
    Chybějící povinné pole Bez uživatelského jména 422 - Chyba: Uživatelské jméno je povinné
    Nepodporované hodnoty Hodnota mimo povolený rozsah 422 - Chyba: Hodnota není podporována