Jak zajistit API pomocí JWT tokenů: Difference between revisions
mNo edit summary |
mNo edit summary |
||
| Line 1: | Line 1: | ||
Pro jednoduché aplikace, které potřebují standardní CRUD operace, je REST jasnou volbou. Pokud máte veřejné API, které budou používat tisíce vývojářů, REST usnadňuje dokumentaci i verzování. Stačí dodržovat HTTP metody a stavové kódy, a klienti hned vědí, co se děje. Vyhnete se také problémům s cachováním, protože REST umí dobře využít HTTP cache. Typická chyba? Snažit se RESTem obejít tím, že vytvoříte deset různých endpointů pro jednu obrazovku. To je signál, že byste měli přemýšlet o GraphQL.<br><br>Když procházíte historii projektu, každá commit zpráva by měla odpovědět na dvě otázky: co se změnilo a proč. Většina vývojářů ale píše zprávy jako „oprava bugu" nebo „úpravy". Takové popisy jsou k ničemu, protože neříkají, co přesně se dělo, a hlavně proč. Bez kontextu se po pár měsících vracíte k hádankám a musíte ručně procházet diff, abyste zjistili, co se vlastně stalo. Cílem není psát romány, ale dodat dostatek informací, aby se kdokoli v historii rychle zorientoval.<br><br>Častou chybou je psát zprávy v minulém čase, jako byste popisovali hotovou věc. Lepší je použít rozkazovací způsob nebo přítomný čas, protože to odpovídá tomu, co commit dělá, když je aplikován. Například „Přidej testy pro přihlášení" je jasné a akční. Vyhněte se také vágním slovům jako „úpravy", „oprava" nebo „refaktoring" – pokud neřeknou, co konkrétně je upraveno, opraveno nebo refaktorováno. Vždy doplňte, co je předmětem změny, ať už jde o soubor, funkci nebo chování.<br><br>Závěrem: REST zvolte, pokud hledáte jednoduchost, stabilitu a kompatibilitu. GraphQL, pokud potřebujete flexibilitu a efektivní práci s daty. Nebojte se kombinovat obojí v rámci jedné aplikace. Nejdůležitější je, aby API sloužilo vašim klientům, ne naopak. Otestujte obě varianty na malém vzorku a vyberte tu, která vám dává smysl.<br><br>Při validaci tokenu na serveru vždy kontrolujte tři věci: podpis, expiraci a issuer (kdo token vydal). Ignorování těchto kontrol vede k bezpečnostním děrám. Například pokud neověřujete issuer, útočník může podepsat token vlastním klíčem a vydávat ho za váš. Také si dejte pozor na algoritmus „none", který někteří starší klienti používají – ten musí být na serveru tvrdě zakázán.<br><br>Při výběru berte v potaz velikost týmu a čas na vývoj. GraphQL se nevyplácí u malých projektů s úzkou doménou, kde by bylo schéma zbytečně složité. REST je tu rychlejší a přehlednější. Naopak pokud víte, že budete API rozšiřovat a klienti si budou žádat stále nové kombinace dat, GraphQL vám ušetří nekonečné přidávání endpointů. Typický kompromis: použijte REST pro veřejné API a GraphQL pro interní služby. Tím získáte to nejlepší z obou světů.<br><br>Když v jednom projektu kombinujete více jazyků, narazíte na dvě základní úskalí: udržení konzistence terminologie a správu překladů bez zbytečné duplicity. Nejprve si proto definujte, které části kódu, dokumentace nebo uživatelského rozhraní budou jazykově závislé. Oddělte je do samostatných souborů nebo modulů, ať nemusíte při změně textu zasahovat do logiky aplikace. Ideální je vytvořit si složkovou strukturu, kde každý jazyk má vlastní adresář, ale sdílí stejné klíče pro překlady.<br><br>Dalším bodem je délka zprávy. Krátké shrnutí je povinné, ale podrobný popis by měl být maximálně pár odstavců. Pokud potřebujete vysvětlit více, je lepší rozdělit změny na menší commity. Nepište ale ani zprávy, které jsou jen shrnutím diffu – to je zbytečné. Místo toho se zaměřte na kontext: jaké problémy změna řeší, jaké jsou její vedlejší účinky, co by mohlo být překvapivé. Tím pomůžete kolegům i budoucímu sobě.<br><br>Při práci s více jazyky se vyplatí zavést automatizovanou kontrolu chybějících překladů. Můžete si napsat skript, který projde všechny jazykové soubory a porovná je s referenčním jazykem. Pokud nějaký klíč chybí, skript vypíše varování. Tento postup je rychlejší než ruční kontrola a minimalizuje riziko, že v ostrém nasazení uživatel uvidí prázdný text. Stejně tak je vhodné pravidelně kontrolovat, že žádný překlad neobsahuje HTML značky nebo proměnné, které by mohly narušit vzhled stránky.<br><br>Klíčové je rozlišovat mezi „co" a „proč". Diff vám ukáže, co se změnilo, ale ne proč. Proto v popisu vždy vysvětlete důvod. Například místo „Změněna barva tlačítka" napište „Změněna barva tlačítka na tmavší, aby byl lépe viditelný na světlém pozadí". Taková informace šetří čas při revizi kódu i při budoucí údržbě. Pokud je změna složitější, rozdělte ji do více commitů, ať každý dělá jednu věc. To usnadní reverz a hledání příčiny chyb. | |||
Latest revision as of 18:11, 21 August 2026
Pro jednoduché aplikace, které potřebují standardní CRUD operace, je REST jasnou volbou. Pokud máte veřejné API, které budou používat tisíce vývojářů, REST usnadňuje dokumentaci i verzování. Stačí dodržovat HTTP metody a stavové kódy, a klienti hned vědí, co se děje. Vyhnete se také problémům s cachováním, protože REST umí dobře využít HTTP cache. Typická chyba? Snažit se RESTem obejít tím, že vytvoříte deset různých endpointů pro jednu obrazovku. To je signál, že byste měli přemýšlet o GraphQL.
Když procházíte historii projektu, každá commit zpráva by měla odpovědět na dvě otázky: co se změnilo a proč. Většina vývojářů ale píše zprávy jako „oprava bugu" nebo „úpravy". Takové popisy jsou k ničemu, protože neříkají, co přesně se dělo, a hlavně proč. Bez kontextu se po pár měsících vracíte k hádankám a musíte ručně procházet diff, abyste zjistili, co se vlastně stalo. Cílem není psát romány, ale dodat dostatek informací, aby se kdokoli v historii rychle zorientoval.
Častou chybou je psát zprávy v minulém čase, jako byste popisovali hotovou věc. Lepší je použít rozkazovací způsob nebo přítomný čas, protože to odpovídá tomu, co commit dělá, když je aplikován. Například „Přidej testy pro přihlášení" je jasné a akční. Vyhněte se také vágním slovům jako „úpravy", „oprava" nebo „refaktoring" – pokud neřeknou, co konkrétně je upraveno, opraveno nebo refaktorováno. Vždy doplňte, co je předmětem změny, ať už jde o soubor, funkci nebo chování.
Závěrem: REST zvolte, pokud hledáte jednoduchost, stabilitu a kompatibilitu. GraphQL, pokud potřebujete flexibilitu a efektivní práci s daty. Nebojte se kombinovat obojí v rámci jedné aplikace. Nejdůležitější je, aby API sloužilo vašim klientům, ne naopak. Otestujte obě varianty na malém vzorku a vyberte tu, která vám dává smysl.
Při validaci tokenu na serveru vždy kontrolujte tři věci: podpis, expiraci a issuer (kdo token vydal). Ignorování těchto kontrol vede k bezpečnostním děrám. Například pokud neověřujete issuer, útočník může podepsat token vlastním klíčem a vydávat ho za váš. Také si dejte pozor na algoritmus „none", který někteří starší klienti používají – ten musí být na serveru tvrdě zakázán.
Při výběru berte v potaz velikost týmu a čas na vývoj. GraphQL se nevyplácí u malých projektů s úzkou doménou, kde by bylo schéma zbytečně složité. REST je tu rychlejší a přehlednější. Naopak pokud víte, že budete API rozšiřovat a klienti si budou žádat stále nové kombinace dat, GraphQL vám ušetří nekonečné přidávání endpointů. Typický kompromis: použijte REST pro veřejné API a GraphQL pro interní služby. Tím získáte to nejlepší z obou světů.
Když v jednom projektu kombinujete více jazyků, narazíte na dvě základní úskalí: udržení konzistence terminologie a správu překladů bez zbytečné duplicity. Nejprve si proto definujte, které části kódu, dokumentace nebo uživatelského rozhraní budou jazykově závislé. Oddělte je do samostatných souborů nebo modulů, ať nemusíte při změně textu zasahovat do logiky aplikace. Ideální je vytvořit si složkovou strukturu, kde každý jazyk má vlastní adresář, ale sdílí stejné klíče pro překlady.
Dalším bodem je délka zprávy. Krátké shrnutí je povinné, ale podrobný popis by měl být maximálně pár odstavců. Pokud potřebujete vysvětlit více, je lepší rozdělit změny na menší commity. Nepište ale ani zprávy, které jsou jen shrnutím diffu – to je zbytečné. Místo toho se zaměřte na kontext: jaké problémy změna řeší, jaké jsou její vedlejší účinky, co by mohlo být překvapivé. Tím pomůžete kolegům i budoucímu sobě.
Při práci s více jazyky se vyplatí zavést automatizovanou kontrolu chybějících překladů. Můžete si napsat skript, který projde všechny jazykové soubory a porovná je s referenčním jazykem. Pokud nějaký klíč chybí, skript vypíše varování. Tento postup je rychlejší než ruční kontrola a minimalizuje riziko, že v ostrém nasazení uživatel uvidí prázdný text. Stejně tak je vhodné pravidelně kontrolovat, že žádný překlad neobsahuje HTML značky nebo proměnné, které by mohly narušit vzhled stránky.
Klíčové je rozlišovat mezi „co" a „proč". Diff vám ukáže, co se změnilo, ale ne proč. Proto v popisu vždy vysvětlete důvod. Například místo „Změněna barva tlačítka" napište „Změněna barva tlačítka na tmavší, aby byl lépe viditelný na světlém pozadí". Taková informace šetří čas při revizi kódu i při budoucí údržbě. Pokud je změna složitější, rozdělte ji do více commitů, ať každý dělá jednu věc. To usnadní reverz a hledání příčiny chyb.