5 praktických rad, kdy zvolit REST a kdy GraphQL
Při psaní kódu se zaměřte na vrstvenou obranu. I když používáte parametrizované dotazy, omezte práva databázového uživatele – aplikace by měla mít přístup pouze k nutným tabulkám a operacím. Nikdy nepřipojujte k databázi jako root nebo administrátor. Dalším krokem je validace vstupů na úrovni aplikace, ale ne jako náhrada parametrizace, jen jako doplněk. Například e-mailová adresa by měla projít filtrem, ale stejně by měla být předána přes prepared statement. Pozor také na chybové hlášky – nikdy nevracejte detailní informace o SQL dotazu, protože to útočníkovi usnadní práci. Místo toho použijte generickou chybovou stránku a detaily zapisujte do logu.
Prvním kritériem je povaha dat a jejich vztahů. Pokud máte hierarchická data nebo propojené entity, kde klient potřebuje různé podmnožiny polí, GraphQL vám ušetří spoustu práce. Klient si totiž požádá přesně o to, co potřebuje, a vy se nemusíte trápit s tvorbou desítek endpointů pro každou variantu. Typickým příkladem je mobilní aplikace, která potřebuje jen jméno a e-mail, zatímco webová verze chce i adresu a historii objednávek. S REST byste museli vytvořit dva endpointy nebo posílat zbytečně velká data.
Na konci si aplikaci spusťte párkrát a zkoušejte zadávat různé hodnoty. Všímejte si, co se stane, když zmáčknete Enter bez textu, když zadáte obrovské číslo nebo když použijete tečku místo čárky. Právě tyto ošetření okrajových případů dělají z začátečníka někoho, kdo rozumí, proč jeho program dělá to, co dělá. Až to budete mít, zkuste přidat další útvar – třeba trojúhelník. Uvidíte, že struktura kódu se téměř nezmění, jen přibude jedna podmínka a vzorec.
Stanovit termín dodání je vždy riskantní. Když řeknete „bude to za týden", zákazník si to uloží do hlavy jako pevný slib. Jakmile práce skončí za deset dní, cítí zklamání, i když bylo zpoždění způsobeno objektivními okolnostmi. Klíčem k úspěšné komunikaci odhadů není být vždy přesný, ale nastavit očekávání tak, aby drobné odchylky neznamenaly ztrátu důvěry.
Pravidelným používáním vestavěných nástrojů si vytvoříte návyk, který se vyplatí. Začněte malými kroky – přejmenováním a extrakcí – a postupně přidávejte složitější operace. Ušetřený čas můžete věnovat návrhu architektury nebo psaní testů. Refaktoring přestane být strašákem a stane se rutinou, která zlepšuje kvalitu kódu bez zbytečného stresu. Nezapomeňte, že nástroje jsou tu od toho, aby vám pomáhaly, ale konečná odpovědnost za správnost kódu je vždy na vás.
Do hlavního kódu si připravte proměnnou typu string pro jméno a pak pomocí Console.ReadLine() načtěte vstup. Pozor na to, že Console.ReadLine() vrací vždy text, takže pokud chcete číslo, musíte ho převést. Například int.Parse(Console.ReadLine()) – ale to je častý zdroj chyb. Když uživatel zadá místo čísla písmeno, aplikace spadne. Proto je lepší použít int.TryParse, která vrátí true nebo false a vy tak můžete ošetřit špatný vstup. Tohle je přesně ten moment, kdy spousta začátečníků propadne frustraci.
Cvičení: načtení čísla bez pádu aplikace Zkuste napsat kód, který se ptá na poloměr kruhu a ověří, jestli uživatel zadal platné číslo. Použijte int.TryParse a proměnnou double pro přesnější výsledek. Můžete to zabalit do while cyklu, který se ptá znovu, dokud není vstup správně. To je praktický vzor, který použijete v každé větší aplikaci. Nezapomeňte, že desetinná čárka se zadává podle jazyka systému – v češtině čárka, ale programátor v kódu píše tečku. To je další častá past, na kterou se upozorňuje až poté, co program vypíše divné číslo.
Když tým poprvé zavádí Scrum, většina lidí předpokládá, že stačí rozdělit práci na dvoutýdenní sprinty a všechno se samo zlepší. Realita je ale jiná. Bez správného nastavení rolí, rituálů a pravidel se Scrum rychle změní v byrokratickou zátěž, která tým spíš brzdí, než mu pomáhá. Než začnete s jakýmkoli školením nebo instalací nástrojů, udělejte si pořádný backlog. Bez něj nemá smysl plánovat sprint, protože nevíte, co je vlastně priorita. Backlog není seznam přání, ale živý dokument, který musí být seřazený podle hodnoty pro zákazníka a rizika.
Naopak REST je skvělý pro jednoduché, stabilní operace, které se často opakují. Pokud poskytujete veřejné API s jasně definovanými zdroji, jako jsou články, uživatelé nebo produkty, a klienti mají standardizované potřeby, REST je přehlednější. Snadno se verzuje, testuje a každý endpoint má jasný účel. Navíc se REST opírá o HTTP metody, což znamená, že automaticky dostáváte cachování, status kódy a další standardní mechanismy. To oceníte zejména u velkých systémů, kde je výkon a jednoduchost klíčová.