Autor Zpráva
ondra256
Profil
Ahoj,

mám API endpoint a pro ověření úživatlského účtu po registraci a přemýšlím, který http status kód vracet

Příklad: Zaregistruju se na nějaké stránce a na email mně příjde ověřovací kód, který zadám na té stránce do formuláře, kliknu na "ověřit účet".
Jaký status code by se měl správně vracet v případě že tam zadám špatný kód?

Já teď vracím 500, ale to je podle mně blbost, protože k žádnému internal server erroru nedošlo. 200vka zavání tím že ověření účtu proběhlo úspěšně. Procházel jsem seznam http status kódu a vlastně nevím který vybrat a nejvíc mně na tenhle případ sedí 200vka s tím, že v těle odpovědi pošlu false.

Jak by to mělo být správně?
Kajman
Profil
Asi 200. Dále by se dalo využít 403 (zakázáno) či 404 (kód nenalezen), ale když si stavíte vlastní API, tak si to můžete specifikovat, jak chcete :-)
Radek9
Profil
ondra256:
Zálěží, jak se na to koukáš. Nejedná se o chybu serveru, takže 5XX rozhodně ne. 2XX asi není úplně spatně, ale viděl bych tam spíš 4XX, pravděpodobně 404 (Not Found), příp. 403 (Forbidden), nebo klidně 418 (I'm a teapot) :-).
N71
Profil *
Je fakt, že to může být jakkoliv, ale většinou 500 znamená neočekávanou chybu, 404 špatnou URL, 401 neplatnou nebo chybějící autentizaci a 403 přístup k nepovolenému prostředku nebo operaci.

V tomto případě bych volil 400 Bad Request – neplatný požadavek.
Radek9
Profil
N71:
404 právě neznamená jen špatnou URL. Prostě to znamená, že nějaký obsah (v tomto případě aktivační kód) nebyl nalezen. 400 je taková obecná chyba pro případy, kdy už žádný jiný kód nedává smysl.
N71
Profil *
Radek9:
To zní sice hodně sémanticky zásadově, ale v praxi to takto vůbec nefunguje. Frontendisti většinou potřebují rozlišit chybu v typu požadavku (URL adresa a její parametry) a v datech těla požadavku (POST/PUT/PATCH body). V prvním případě se používá v souladu s běžnou HTTP praxí kód 404 a v tom druhém pak 400. To, jaký je pravý důvod selhání, že něco bylo nebo nebylo nalezeno, je v tomto případě úplně irelevantní.
Radek9
Profil
N71:
Jasně, praxe je jiná. :-) Ale ten HTTP kód je prostě definovaný takhle obecně. Třeba v případě REST API se 404 používá naprosto běžně i pro tyhle účely. Při navázání na frontend to ale samozřejmě může dělat neplechu.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0