Lekce 2 - Úvod do REST API a moderních webových aplikací
V minulé lekci, Úvod do praktického testování softwaru, jsme si vysvětlili, proč je důležité testovat. Představili jsme si základní přístupy k testování softwaru různých typů aplikací a popsali jsme si rozdíly mezi User Experience (UX) a User Interface (UI).
V dnešním tutoriálu praktického testování projektů se seznámíme s fungováním moderních webových aplikací pomocí REST API. Vysvětlíme si, proč se moderní webové aplikace pomocí API tvoří.
Naším cílem dále v kurzu bude otestovat jednoduché REST API pro správu databáze faktur. Budeme testovat přidání, úpravu nebo mazání osoby či faktury a samozřejmě i jejich prohlížení.
Pro komunikaci s naším API v Pythonu budeme využívat již existující javascriptový klient v Reactu. Ukažme si, jak bude práce s naším API v klientu vypadat:

Motivace
V minulosti se webové aplikace tvořily tak, že se na vzdáleném serveru vygenerovala celá nová stránka a ta se poslala uživateli do prohlížeče. Doteď se nějaké aplikace takto i tvoří. Hlavně ty, které jsou zaměřené na články (například ITnetwork takto funguje).
Více se o tvorbě aplikací ve frameworku Django můžete dozvědět v kurzu Django - Tvorba webů v Pythonu.
Avšak v praxi se dnes na webu používá spousta aplikací, které jsou opravdu spíše aplikacemi než webovými stránkami s články, např. Spotify nebo Google Docs:

Od takové aplikace uživatel čeká spíše funkčnost, jakou mají třeba desktopové aplikace běžící v systému Windows, a ne webové stránky, kde se celá stránka přenačte vždy, když se na něco klikne. Proto se dnes server již nepoužívá k posílání celé stránky do prohlížeče, ale pouze k posílání dat, která si stránka nebo aplikace zpracovává, aniž se musí neustále obnovovat a vykreslovat.
Jak funguje aplikace s API?
Taková webová aplikace má potom dvě části a jedná se v podstatě o dvě oddělené aplikace:
- API server – Aplikace s databází běžící na vzdáleném serveru, která posílá a přijímá data.
- Tlustý klient – Webová stránka v JavaScriptu nebo mobilní aplikace, které se serverem komunikují.
Během kurzu si ukážeme, jak testovat obě uvedené části. Zaměříme se také na ověření správné komunikace mezi serverem a klientem.
Výhodou serveru je samozřejmě to, že data naší aplikace jsou na internetu, a tudíž stále aktuální. Kdokoli si spustí klienta, uvidí poslední data, například to, jaké byly dnes přidané nové faktury.
API
API je zkratka pro Application Programming Interface, česky aplikační programové rozhraní. Je to obecně cokoli, co umožňuje jednotlivým částem softwaru komunikovat mezi sebou. Komunikace mezi serverem a klientem musí být samozřejmě přesně definovaná, jinak si aplikace mezi sebou nebudou rozumět.
Způsob komunikace mezi serverem a klientem je definován v tzv. API dokumentaci k našemu projektu. Tuto dokumentaci nalezneme v článku API dokumentace k databázi faktur.
API si můžeme představit jako číšníka v restauraci, který zajišťuje (a překládá) komunikaci mezi hostem a kuchařem. Nebo jako palubní desku automobilu, která pomocí přesně definovaných metod (tlačítka na desce) předá to, co řidič (jedna komponenta) chce, jiné komponentě (motoru). A návod k autu je jako API dokumentace, kde jsou jednotlivé metody (tlačítka) popsané.
Existují grafická API, API pro frameworky a knihovny, API operačních systémů, ale nás budou zajímat hlavně webová API.
Webová API
Webové API definuje, jak spolu komunikují nějaké komponenty po internetu. Synonymem může být webová služba. Typicky jde o jednu z následujících možností:
- Dvě části aplikace – Webová stránka si dotahuje ze serveru potřebná data pomocí AJAX dotazu.
- Dvě různé aplikace – Mobilní aplikace si stahuje data z webu.
Více se o technologii AJAX můžete dozvědět v článku AJAX v JavaScriptu - Základní dotazy.
U našeho webového API budeme testovat provádění operací nad databází osob a faktur, například otestujeme nalezení existující osoby nebo uložení nové faktury. Webová API samozřejmě nejsou omezena jen na databáze, můžeme prostřednictvím nich posílat SMS, zjistit aktuální počasí a podobně.
Ukázka webového API
Malé, ale velmi populární API mezi českými e-shopy běží na stránkách České národní banky. Konkrétně na této adrese. Na adrese jsou dostupné kurzy měn pro aktuální den. Nejde však o žádnou HTML stránku, nýbrž o surová data ve formátu CSV.
Webová API totiž nejsou určená lidem, ale programům. Výstup tohoto API vypadá takto:
27.12.2024 #250 země|měna|množství|kód|kurz Austrálie|dolar|1|AUD|15,027 Brazílie|real|1|BRL|3,900 Bulharsko|lev|1|BGN|12,886 Čína|žen-min-pi|1|CNY|3,309 Dánsko|koruna|1|DKK|3,379 EMU|euro|1|EUR|25,205 Filipíny|peso|100|PHP|41,595 Hongkong|dolar|1|HKD|3,112 Indie|rupie|100|INR|28,256 Indonesie|rupie|1000|IDR|1,488 Island|koruna|100|ISK|17,371 Izrael|nový šekel|1|ILS|6,570 Japonsko|jen|100|JPY|15,307 Jižní Afrika|rand|1|ZAR|1,291 Kanada|dolar|1|CAD|16,802 Korejská republika|won|100|KRW|1,639 Maďarsko|forint|100|HUF|6,127 Malajsie|ringgit|1|MYR|5,402 Mexiko|peso|1|MXN|1,192 MMF|ZPČ|1|XDR|31,503 Norsko|koruna|1|NOK|2,128 Nový Zéland|dolar|1|NZD|13,622 Polsko|zlotý|1|PLN|5,895 Rumunsko|leu|1|RON|5,063 Singapur|dolar|1|SGD|17,783 Švédsko|koruna|1|SEK|2,196 Švýcarsko|frank|1|CHF|26,821 Thajsko|baht|100|THB|71,045 Turecko|lira|100|TRY|68,723 USA|dolar|1|USD|24,157 Velká Británie|libra|1|GBP|30,337
Toto API používá například web ITnetwork, který si z něj v
pravidelných časových intervalech aktualizuje kurz EUR pro nákupy kurzů ze
Slovenska. Každý řádek reprezentuje jednu měnu vůči české koruně,
sloupce v řádku jsou oddělené znakem |
.
Ukázka API pro získání detailu osoby
Pro ilustraci si ukažme také to, jak bude vypadat odpověď API, které budeme v kurzu testovat. Níže je uvedena odpověď na požadavek klienta na konkrétní osobu ve formátu JSON:
{ "name": "ITnetwork s.r.o.", "identificationNumber": "05861381", "taxNumber": "CZ05861381", "accountNumber": "123456789", "bankCode": "5500", "iban": "CZ000123456789", "telephone": "+420 123 123 123", "mail": "[email protected]", "street": "Karlovo náměstí 290/16, Nové Město (Praha 2)", "zip": "120 00", "city": "Praha", "country": "CZECHIA", "note": "Největší IT akademie v Česku.", "_id": 4 }
Pokud jste se s JSON ještě nesetkali, nemusíte mít strach, brzy si jej vysvětlíme. Naším úkolem tedy bude otestovat takovouto službu s databází, s níž se bude komunikovat pomocí textových zpráv, jako je ta výše.
V další lekci, Webová API - SOAP, GraphQL, REST a formát JSON, si vysvětlíme pojmy jako REST API, SOAP, GraphQL a JSON. REST API si ukážeme na projektu, který budeme v tomto kurzu testovat.