1. diel - Úvod do webových API v Java Spring
Vitajte v e-learning kurze Spring Boot, kde sa zoznámime s tvorením moderných webových aplikácií pomocou REST API. Práve API sú najčastejšie typy projektov v Java Spring. Naším cieľom bude vytvoriť jednoduché RESTful API pre správu databázy filmov. Dáta o filmoch, režiséroch a hercoch budeme môcť pridávať, upravovať alebo mazať a samozrejme si ich aj prezerať.
Pre komunikáciu s naším API v Jave budeme využívať už existujúceho javascriptového klienta v React alebo Angular. Ukážme si, ako bude práca s naším API vyzerať:
V dnešnom Java Spring tutoriále si vysvetlíme, prečo sa moderné webové aplikácie robia pomocou API.
Minimálne požiadavky
Kurz predpokladá znalosti:
- Javy SE (štandardná edícia), najmä:
- Základné princípy frameworku Spring Boot
- Prácu s databázou vo frameworku Spring
Výhodou je skúsenosť s:
- Kolekciami a prúdmi v Jave
- MySQL/MariaDB alebo inou SQL databázou
- JavaScriptom, ideálne knižnicami React alebo Angular
Motivácia
V doterajších kurzoch frameworku Spring sme si vytvorili aplikáciu kompletne len v Spring Boot. V minulosti sa aplikácie naozaj takto tvorili a doteraz sa nejaké aplikácie takto aj tvoria, hlavne tie, ktoré sú zamerané na články (napr. ITnetwork takto funguje).
V praxi sa dnes ale na webe používa množstvo aplikácií, ktoré sú naozaj skôr aplikáciami než webovými stránkami s článkami, napr. Spotify alebo Google Docs. Od takej aplikácie čaká používateľ skôr funkčnosť ako majú napríklad desktopové aplikácie bežiace v systéme Windows a nie ako webové stránky, kde sa celá stránka prenačíta vždy, keď sa na niečo klikne. Preto sa dnes server už nepoužíva na posielanie celej stránky do prehliadača, ale iba na posielanie dát, ktoré si stránka alebo aplikácia spracováva bez toho, aby sa musela neustále obnovovať a preblikávať.
Ako funguje aplikácia s API?
Takáto webová aplikácia má potom 2 časti a jedná sa v podstate o 2 oddelené aplikácie:
- API server - Aplikácia s databázou bežiacou na vzdialenom serveri, posiela a prijíma dáta. Túto aplikáciu budeme v tomto kurze vytvárať.
- Tučný klient - Webová stránka v JavaScripte alebo mobilná aplikácia, ktorá so serverom komunikuje. Túto aplikáciu si len stiahneme a budeme ju používať na komunikáciu s naším API serverom. Pre záujemcov sa jedná o aplikáciu vytvorenú podľa kurzov Základy React alebo Základy Angular frameworku, môžete sa teda pozrieť, ako bola vytvorená a prípadne si ju aj upraviť.
API
API je skratka pre Application Programming Interface, po slovensky aplikačné programové rozhranie. Je to všeobecne čokoľvek, čo umožňuje jednotlivým častiam softvéru komunikovať medzi sebou. Komunikácia medzi serverom a klientom musí byť samozrejme presne definovaná, inak si aplikácie medzi sebou nebudú rozumieť. Náš server teda naprogramujeme podľa dokumentácie, aby poskytoval API (rozhranie), s ktorým daný klient vie pracovať.
API si môžeme predstaviť ako čašníka v reštaurácii, ktorý zaisťuje (a prekladá) komunikáciu medzi hosťom a kuchárom. Alebo ako palubnú dosku automobilu, ktorá pomocou presne definovaných metód (tlačidla na doske) odovzdá to, čo vodič (jeden komponent) chce inému komponentu (motoru). A návod k autu je ako API dokumentácia, kde sú jednotlivé metódy (tlačidlá) popísané.
Existujú grafické API, API pre frameworky a knižnice, API operačných systémov, ale nás budú zaujímať hlavne webové API.
Webová API
Webové API definuje, ako spolu komunikujú nejaké komponenty po internete. Typicky sa jedná o dve časti aplikácie (webová stránka si doťahuje zo servera potrebné dáta pomocou AJAX dotazu) alebo dve rôzne aplikácie (mobilné aplikácie si sťahuje dáta z webu). Synonymom môže byť webová služba. Naše webové API bude umožňovať vykonávať operácie nad databázou filmov, napr. vyhľadá existujúci film alebo vloží nový film. Webové API samozrejme nie sú obmedzené len na databázy, môžeme cez ne posielať SMS, zistiť aktuálne počasie a podobne.
Ukážka webového API
Malinké, ale veľmi populárne API medzi českými e-shopmi beží na stránkach Českej národnej banky. Konkrétne na tejto adrese
Na adrese sú dostupné kurzy mien pre aktuálny deň. Nejde ale o žiadnu HTML stránku, ale o surové dáta vo formáte CSV. Webové API totiž nie sú určené pre ľudí, ale pre programy. Výstup tohto API vyzerá takto:
07.01.2019 #4 země|měna|množství|kód|kurz Austrálie|dolar|1|AUD|15,947 Brazílie|real|1|BRL|6,053 Bulharsko|lev|1|BGN|13,076 Čína|žen-min-pi|1|CNY|3,262 Dánsko|koruna|1|DKK|3,425 EMU|euro|1|EUR|25,575 Filipíny|peso|100|PHP|42,647 Hongkong|dolar|1|HKD|2,852 Chorvatsko|kuna|1|HRK|3,442 Indie|rupie|100|INR|32,093 Indonesie|rupie|1000|IDR|1,586 Island|koruna|100|ISK|18,916 Izrael|nový šekel|1|ILS|6,049 Japonsko|jen|100|JPY|20,641 Jižní Afrika|rand|1|ZAR|1,612 Kanada|dolar|1|CAD|16,737 Korejská republika|won|100|KRW|1,996 Maďarsko|forint|100|HUF|7,965 Malajsie|ringgit|1|MYR|5,431 Mexiko|peso|1|MXN|1,156 MMF|ZPČ|1|XDR|31,079 Norsko|koruna|1|NOK|2,609 Nový Zéland|dolar|1|NZD|15,111 Polsko|zlotý|1|PLN|5,960 Rumunsko|leu|1|RON|5,485 Rusko|rubl|100|RUB|33,405 Singapur|dolar|1|SGD|16,467 Švédsko|koruna|1|SEK|2,502 Švýcarsko|frank|1|CHF|22,780 Thajsko|baht|100|THB|69,878 Turecko|lira|1|TRY|4,169 USA|dolar|1|USD|22,347 Velká Británie|libra|1|GBP|28,501
Toto API používa napr. web ITnetwork, ktorý si z neho v pravidelných časových intervaloch aktualizuje kurz EUR pre nákupy kurzov zo Slovenska.
Ukážka API pre získanie detailu herca
Pre ilustráciu si ukážme aj ako bude vyzerať odpoveď API, ktorú budeme v kurze vytvárať. Nižšie je uvedená odpoveď pre požiadavku klienta na konkrétneho herca:
{ "_id": "1", "name": "Dwayne Johnson", "birthDate": "1972-05-02T00:00:00.000Z", "country": "USA", "biography": "Nejprve atlet a hráč amerického fotbalu, poté wrestler a následně herec.", "role": "actor", "__v": 0 }
Našou úlohou teda bude vytvoriť službu s databázou, s ktorou sa bude komunikovať pomocou textových správ, ako je tá vyššie. API používa formát JSON, o ktorom si povieme nabudúce.