Jak zajistit API pomocí JWT tokenů: Difference between revisions

From Rikkiepedia
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
Line 1: Line 1:
Dalším krokem je práce s box modelem. Každý prvek na stránce je obdélník, který má padding, border a margin. Padding je vnitřní okraj (mezera mezi obsahem a rámečkem), border je rámeček a margin je vnější okraj (mezera mezi prvky). Často se stává, že začátečníci zapomenou na reset okrajů, proto se prvky „lepí" k sobě nebo se liší v různých prohlížečích. Na začátek si pomozte univerzálním selektorem * a nastavte margin: 0; padding: 0; box-sizing: border-box; – tím získáte předvídatelnější chování.<br><br>Pozor na typické chyby. Mnoho vývojářů volí IDE podle popularity, ale zjistí, že vestavěný klient nepodporuje jejich konkrétní databázi (např. Oracle, PostgreSQL, SQL Server). Před instalací si ověřte, jestli existuje oficiální plugin nebo rozšíření, a hlavně – jestli je aktivně udržované. Starý plugin, který nefunguje s nejnovější verzí databáze, způsobí více škody než užitku. Také si dejte pozor na to, že některé funkce, jako je vizualizace vztahů nebo porovnávání schémat, jsou dostupné jen v placené verzi, a to může být rozhodující faktor.<br><br>Nezapomínejte na bezpečnostní testování. I malá aplikace může obsahovat citlivá data, proto vždy testujte šifrování přenosu, ukládání tokenů a oprávnění. Použijte základní penetrační testy: zkuste odchytit provoz přes proxy, zkuste přepsat hodnoty v žádostech a podívejte se, zda aplikace správně ošetřuje neplatné vstupy. Často se zapomíná na testování oprávnění na pozadí – aplikace by měla fungovat i po odepření přístupu k poloze nebo kontaktům, ne jen okamžitě spadnout.<br><br>Pro efektivní testování si nejprve vytvořte matici zařízení. Rozdělte trh podle reálného zastoupení operačních systémů a verzí. Nepokoušejte se testovat na všem, vyberte si reprezentativní vzorek: nejnovější vlajkové lodě, dva až tři středně staré modely a jedno zařízení s nízkou pamětí. Právě starší hardware často odhalí problémy s výkonem, které na nových telefonech nepostřehnete. Pro testování offline režimu a slabého signálu použijte emulátor s omezením přenosové rychlosti ušetříte čas i peníze za reálná zařízení.<br><br>Důležitá je také podpora verzování změn v databázi. Některá IDE umí porovnat dvě schémata, vygenerovat migrační skript a dokonce synchronizovat strukturu. To se hodí, když pracujete v týmu a potřebujete sdílet změny bez ručního psaní SQL. Pokud takovou funkci nenajdete, zvažte, zda to není důvod, proč zůstat u stávajícího nástroje, i když jinde vám vyhovuje víc. Nakonec si vždy ověřte, jestli se databázové nástroje chovají stabilně s vaším operačním systémem a jestli nezpomalují start IDE.<br><br>Praktická rada: při převodu existujícího JavaScriptového souboru na TypeScript začněte tím, že změníte příponu na .ts a zapnete kompilátor. Postupně opravujte chyby, které se objeví. Můžete také použít direktivu // @ts-ignore pro dočasné potlačení chyby, ale jen pokud víte, proč to děláte. Vyhněte se ale používání této direktivy jako trvalého řešení – je to past, která vede k tomu, že typová kontrola přestane dávat smysl.<br><br>Důkladné testování mobilních aplikací je nikdy nekončící proces. Zavedete-li od začátku kombinaci manuálního a automatizovaného testování, vytvoříte si matici zařízení a budete pravidelně kontrolovat výkon i bezpečnost, výrazně snížíte riziko špatných recenzí a ztráty uživatelů. Pamatujte, že testování není jen fáze před vydáním, ale průběžná činnost, která se vyplácí při každé další aktualizaci.<br><br>Klíčové aspekty a časté chyby Nejprve musíte správně nastavit podepisování. Používejte symetrický algoritmus HMAC-SHA256 pro jednoduché případy, ale pro produkční prostředí zvolte asymetrický RSA, kdy soukromý klíč držíte na serveru a veřejný klíč sdílíte s ověřovacími službami. Ukládejte klíče mimo zdrojový kód, nejlépe do proměnných prostředí nebo tajných trezorů. Nikdy nepodepisujte token s prázdným tajemstvím nebo slabým heslem – to je nejčastější chyba, kterou útočníci zneužívají.<br><br>Nastavení základů: typografie a barvy Prvním praktickým krokem je nastavení písma a barev. V CSS použijte selektor body a definujte vlastnost font-family – vždy uveďte několik náhradních fontů, aby se stránka správně zobrazila i na zařízeních bez konkrétního typu písma. Pro barvy používejte hexadecimální kódy (např. #333 pro tmavě šedou) nebo funkce rgb(). Dejte pozor na kontrast – text a pozadí musí být čitelné. Častou chybou začátečníků je používání příliš jasných barev nebo nedostatečného kontrastu, což odrazuje návštěvníky.<br><br>Na závěr si zkuste vytvořit jednoduchou stránku o sobě nebo svém projektu. Začněte s HTML strukturou, přidejte CSS pro barvy, písma a mezery. Postupně přidávejte další prvky – obrázky, odkazy, seznamy. Testujte v různých prohlížečích a nástrojích pro vývojáře. Nebojte se chyb, každý je dělá. S praxí zjistíte, že HTML a CSS nejsou těžké, jen vyžadují trpělivost a systematičnost.
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ů, 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.