První REST API: chyba v odpovědi, která zničí celý výsledek

<img src="https://i.ytimg.com/vi/9UMahnn2H5k/hq720.jpg" alt="Kolik dnes stojí postavit takový dům? Prohlídka moderního rodinného domu, který si zamilujete!" style="max-width:430px;float:left;padding:10px 10px 10px 0px;border:0px;">Botník musí dýchat a nestát v cest<br> <br> <br> <br> Prvním krokem je rozdělit bylinky podle odolnosti. Vytrvalé druhy, jako je tymián, oregano, šalvěj, máta nebo meduňka, mají šanci zimu venku přežít, pokud jim zajistíte správné podmínky. Jednoleté bylinky, jako je bazalka, koriandr nebo kopr, venku přes zimu neudržíte, ať děláte cokoli. U těch je lepší na podzim sklidit poslední úrodu a truhlík vyprázdnit. Neztrácejte čas snahou zachránit něco, co má v genech jiné podnebí.<br> <br> <br> <br> Testuj odpovědi ručně i automaticky. Nástroje jako curl nebo HTTP klient ti ukážou reálná data. Ověř, že prázdný seznam vrací [], ne null. Zkontroluj, že chybí-li povinné pole, API vrátí 400 s jasnou zprávou. Sleduj dobu odezvy a loguj chyby. První REST API nemusí být dokonalé, ale musí být čitelné a předvídatelné. Právě konzistence odpovědí rozhoduje o tom, zda s ním někdo bude chtít pracovat.<br> <br> <br> <br> Kam umístit světla, aby kuchyň působila větš<br> <br> <br> <br> Bezpečná jídla jsou měkká, nedrolivá a málo barvící: vařená zelenina, jogurt, vejce, měkké sýry, těstoviny, rýže, banán, vařené brambory, polévky bez velkých kusů. Naopak opatrnost je na místě u tvrdých ořechů, semínek, popcornu, karamelu, žvýkačky a ledu. Žvýkačka je problém i bez cukru – lepí se na dráty a zámky a nejde z nich dostat. Popcorn zase zanechává tenké slupky, které se zachytí mezi drátem a zubem a nejdou vypláchnout.<br> <br> <br> <br> Stavové kódy a chybové odpovědi rozhodují o použitelnosti Nejčastější chyba je vracet 200 OK i při chybě. Klient pak musí hádat, co se stalo. Pro úspěch používej 200, pro vytvoření 201, pro neplatný vstup 400, pro chybějící autentizaci 401, pro nedostatečná práva 403, pro nenalezené 404 a pro neočekávanou chybu serveru 500. Tělo chyby měj jednotné: pole error s kódem a lidsky čitelnou zprávou. Nikdy neposílej stack trace do produkce.<br> <br> <br> <br> Formát odpovědi drž konzistentní. Pokud vracíš JSON, vždy posílej hlavičku Content-Type: application/json. Datum a čas posílej v ISO 8601, čísla bez uvozovek, boolean jako true nebo false. U seznamů přidej metadata, jako je celkový počet nebo odkaz na další stránku. Vyhni se vnořování, které klient musí rozbalovat. Čím plošší struktura, tím snazší zpracování.<br> <br> <br> <br> Spolehlivý je tester vlhkosti, který se ponoří do nádržky a ukáže procento vody. Hodnota nad 3 % znamená okamžitou výměnu. Bez měřáku platí jednoduché pravidlo: pokud si nepamatujete, kdy byla kapalina naposledy vyměněna, vyměňte ji. Vizuální kontrola je jen orientační – tmavá kapalina signalizuje stáří, ale čirá kapalina může být stejně znehodnocená vodou. Zkontrolujte také stav pryžových hadic a těsnění kolem víčka nádržky; prasklá manžeta pouští vlhkost rychleji.<br> <br> <br> <br> První REST API často vzniká jako jednoduchý endpoint, který vrátí data. Jenže právě v odpovědi se dělá nejvíc chyb. Když klient dostane jiný tvar, než čeká, dochází k chybám, které se špatně hledají. Základem je vrátit vždy stejnou strukturu: stavový kód, tělo s daty nebo chybou a hlavičku Content-Type. Bez toho se i funkční API stává nepředvídatelným.<br> <br> <br> <br> Požadavek začíná metodou a cestou. Pro čtení používej GET, pro vytvoření POST, pro úpravu PUT nebo PATCH, pro smazání DELETE. Cesta má být podstatné jméno v množném čísle, například /uzivatele. Vyhni se slovesům v cestě, jako /vratUzivatele. Parametry filtrování posílej v query stringu, tělo požadavku nech pro data. U GET nikdy neočekávej tělo, některé klienty ho zahodí.<br> <br> <br> <br> Při návrhu mysli na verzi. První verzi dej do cesty, například /v1/uzivatele. Změny, které rozbijí kompatibilitu, dělej v nové verzi. U existující verze pouze přidávej pole, nikdy neubírej ani neměň typ. Dokumentace není volitelná, ale musí být krátká a přesná. U každého endpointu uveď metodu, cestu, parametry, příklad požadavku a příklad odpovědi včetně chyb.