Express, nebo čistý Node.js? Co zvolit pro REST API

Z Mazovia

Oprávnění řeš hned, jakmile je aplikace potřebuje. Nestačí je deklarovat v manifestu, musíš si je vyžádat za běhu. Pokud uživatel odmítne, aplikace nesmí spadnout ani se zacyklit. Ošetři i situaci, kdy uživatel oprávnění později odebere v nastavení. Totéž platí pro přístup k souborům nebo k poloze. Čím dřív si na tento režim zvykneš, tím méně práce tě čeká při ladění.

Vývojář často dokončí funkci, která technicky funguje, ale uživatelé si stěžují nebo ji nepoužívají. Rozdíl bývá v drobnostech, které se snadno přehlédnou. UI/UX design není o estetice, ale o tom, zda člověk najde, co potřebuje, a zda to zvládne bez zbytečného přemýšlení. Pokud vývojář pochopí základní principy, ušetří mnoho iterací.

Hlavní větev musí být vždy nasaditelná. To znamená, že každý požadavek na sloučení projde automatickou kontrolou a testy. Pokud testy nejsou, zaveďte alespoň ruční ověření na testovacím prostředí. Nikdy nesloučujte změnu, která rozbíjí build, i kdyby byla sebelepší. Oprava rozbité hlavní větve zdrží celý tým a často se řeší pozdě v noci.

Proč nestačí, že to funguje Prvním krokem je uznat, že uživatel nečte dokumentaci. Obrazovka musí být srozumitelná sama o sobě. Každý prvek by měl mít jasný účel. Když vývojář přidá tlačítko, má vědět, jakou akci spustí a co se stane po kliknutí. Typická chyba je skrytí důležité funkce do menu, o kterém uživatel neví. Řešením je otestovat prototyp na kolegovi, který projekt nezná. Během pěti minut sledujte, kde se zasekne. To odhalí víc než týden diskusí.

Ať zvolíte cokoli, držte se několika zásad. Trasy čleňte podle zdrojů, ne podle akcí, a verzi API uvádějte v cestě. Odpovědi posílejte ve stejném tvaru, ideálně s daty a chybovou částí odděleně. Logování a zpracování chyb nastavte hned na začátku, ne až po prvním incidentu. A pamatujte, že Express je jen tenká vrstva – bezpečnost, validace a práce s databází zůstávají na vás.

Začni tím, že si pokrytí změříš jen na novém nebo upravovaném kódu. Celorepozitářové číslo je zavádějící, protože starý kód bez testů ho sráží dolů a nutí tě psát testy tam, kde se nic nemění. Praktický postup: nastav nástroj tak, aby reportoval pokrytí změněných řádků v rámci pull requestu, a stanov jen minimální hranici pro nový kód. Tím se vyhneš hromadění prázdných testů, které sice zvyšují procento, ale netestují žádné chování.

Konzistence je další zásadní věc. Pokud se tlačítko „Uložit" chová na jedné obrazovce jinak než na druhé, uživatel ztrácí důvěru. Vytvořte si jednoduchý styl: barvy pro akce, velikosti písma pro nadpisy a tělo, jednotné rozestupy. Nemusíte mít designérský systém, stačí pár pravidel, která dodržíte. Vývojáři často podceňují čitelnost. Malý font, slabý kontrast nebo dlouhé řádky bez odsazení způsobují únavu. Stačí zvětšit písmo na 16 px a omezit šířku textu na 60–70 znaků.

První pravidlo se týká ukládání dat. Do storu patří pouze stav, který je sdílený mezi obrazovkami nebo potřebuje časovou osu změn. Lokální otevření dialogu, hodnota ve formuláři nebo načítání jednoho seznamu patří do useState nebo do knihovny pro serverová data. Když začnete ukládat všechno, vznikne z Reduxu monolit, kde se každá drobnost řeší akcí. Pomůže jednoduchý test: pokud hodnotu čte jen jedna komponenta a nikdy ji nepotřebujete přehrát zpětně, do storu nepatří.

Začátek s Expressem je krátký. Vytvoříte instanci aplikace, zaregistrujete middleware pro JSON a definujete trasy metodami get, post, put a delete. Middleware je klíčový pojem: funkce, která dostane požadavek, odpověď a funkci next. Pořadí registrace určuje pořadí zpracování, takže obecné middlewary patří nahoru a zpracování chyb dolů. Kdo si toto neohlídá, stráví hodiny hledáním, proč se mu trasa nikdy nezavolá.

Selektory a normalizace místo kopií Druhé pravidlo se týká tvaru dat. Seznamy objektů s vnořenými referencemi vedou k tomu, že se při každé změně přepisuje celý strom a komponenty se překreslují zbytečně. Řešením je normalizace: entity uložené podle identifikátoru a vedle toho pole identifikátorů pro pořadí. K tomu patří selektory, které z těchto dat skládají pohled pro komponentu. Selektory pište mimo komponentu a používejte memoizaci. Bez ní se při každém renderu vytváří nový objekt a reference se změní, i když se obsah nezměnil.

Kde začátečníci nejčastěji klopýtnou První častá chyba je chybějící kontrola vstupu. Express sám o sobě nic nevaliduje, takže data z těla požadavku musí projít ověřením dřív, než se dostanou do databáze. Druhá chyba je ignorování asynchronních chyb: pokud v async handleru vyhodíte výjimku a nezavoláte next(err), požadavek zůstane viset a klient čeká do timeoutu. Řešením je obalovací funkce nebo knihovna, která výjimky předá dál. Třetí chyba je návratové kódy – vracet 200 i při neúspěchu mate klienty i monitorovací nástroje.