1. diel - REST API v Django REST - Úvod do webových API Nové
Vitajte v e-learning kurze Django REST Framework, kde sa zoznámime s tvorbou moderných webových aplikácií pomocou REST API. API sú najčastejšie typy projektov v Django REST Frameworku. 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 Pythone budeme využívať už existujúceho javascriptového klienta v React alebo Angular. Ukážme si, ako bude práca s naším API v klientovi vyzerať:

V dnešnom Django REST Framework tutoriále si vysvetlíme, prečo sa moderné webové aplikácie vytvárajú pomocou API.
Minimálne požiadavky
Kurz predpokladá znalosti:
- Programovanie v Pythone v rozsahu kurzov:
- Základné princípy frameworku Django
Výhodou je skúsenosť sa:
- SQLite alebo inou SQL databázou
- a JavaScriptom, ideálne knižnicami React alebo Angular
Čo robiť, keď mi niečo v kurze nepôjde?
Práve štartuješ rozsiahly a pokročilý kurz, v ktorom s každou zmenou musíme aktualizovať buď všetky alebo minimálne časť vzorových projektov na stiahnutie. Nie je teda už možné udržiavať vzorové projekty pre každú lekciu, ako tomu bolo napr. v Základoch programovania. V kurze je niekoľko archívov so vzorovým projektom na stiahnutie, ktoré tvoria záchytné body.
V prípade akéhokoľvek problému pokračuj vo výklade a dôjdi do najbližšej lekcie s archívom a tam si stiahni funkčný vzorový projekt. Ten si môžeš porovnať so svojim kódom a nájsť si tak chybu.
Motivácia
V predchádzajúcom kurze Základy Django frameworku pre Python sme si vytvorili aplikáciu kompletne len v Django. V minulosti sa webové 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á webová aplikácia má potom dve časti a jedná sa v podstate o dve 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 REST API klient v React - Filmová databáza 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. Synonymom môže byť webová služba. 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.
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 na nákupy kurzov zo Slovenska.
Každý riadok reprezentuje jednu menu voči slovenskej korune, stĺpce v riadku
sú oddelené znakom |
.
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 vo formáte JSON:
{ "_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 }
Pokiaľ ste sa s JSON ešte nestretli, čoskoro si ho vysvetlíme. Našou úlohou teda bude vytvoriť takúto službu s databázou, s ktorou sa bude komunikovať pomocou textových správ, ako je tá vyššie.
V ďalšej lekcii, REST API v Django REST - SOAP, GraphQL, REST a JSON , sa zoznámime s rôznymi typmi aplikačných rozhraní, aby sme mohli tvoriť zaujímavé webové aplikácie.