NOVINKA - Vstup do světa AI s ONLINE víkendovým kurzem Práce s umělou inteligencí od A do Z. Přihlas se ještě dnes!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Lekce 1 - REST API v Django REST - Úvod do webových API Nové

Vítejte v e-learningovém kurzu Django REST Framework, kde se seznámíme s tvorbou moderních webových aplikací pomocí REST API. API jsou nejčastější typy projektů v Django REST Frameworku. Naším cílem bude vytvořit jednoduché RESTful API pro správu databáze filmů. Data o filmech, režisérech a hercích budeme moci přidávat, upravovat nebo mazat a samozřejmě si je i prohlížet.

Pro komunikaci s naším API v Pythonu budeme využívat již existujícího javascriptového klienta v Reactu nebo Angularu. Ukažme si, jak bude práce s naším API v klientu vypadat:

Ukázka výsledné aplikace – zobrazení seznamu filmů - REST API v Django - Filmová databáze

V dnešním Django REST Framework tutoriálu si vysvětlíme, proč se moderní webové aplikace vytvářejí pomocí API.

Minimální požadavky

Kurz předpokládá znalosti:

Pokud některé ze znalostí nemáte, absolvujte nejprve daný kurz.

Výhodou je zkušenost se:

Kurzem budete moci projít, i když znalosti JavaScriptu nemáte. Jen nebudete rozumět tomu, jak klient funguje, což v zásadě nevadí – zaměřujeme se zde na server v Pythonu a Django REST Framework.

Co dělat, když mi něco v kurzu nepůjde?

Právě startuješ rozsáhlý a pokročilý kurz, ve kterém musíme s každou změnou aktualizovat buď všechny, nebo minimálně část vzorových projektů ke stažení. Není tedy již možné udržovat vzorové projekty pro každou lekci, jako tomu bylo např. v Základech programování. V kurzu je několik archivů se vzorovým projektem ke stažení, které tvoří záchytné body.

V případě jakéhokoli problému pokračuj ve výkladu a dojdi do nejbližší lekce s archivem. Tam si stáhni funkční vzorový projekt. Ten si můžeš porovnat se svým kódem a najít si tak chybu.

Motivace

V předchozím kurzu Základy Django frameworku pro Python jsme si vytvořili aplikaci kompletně jen v Djangu. V minulosti se webové aplikace opravdu takto tvořily a dodnes se některé aplikace tak i vyvíjejí. Hlavně ty, které jsou zaměřené na články (např. ITnetwork takto funguje).

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.

Spotify - REST API v Django - Filmová databáze

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. Tuto aplikaci budeme v tomto kurzu vytvářet.
  • Tlustý klient – Webová stránka v JavaScriptu nebo mobilní aplikace, které se serverem komunikují. Tuto aplikaci si jen stáhneme a budeme ji používat pro komunikaci s naším API serverem. Pro zájemce se jedná o aplikaci vytvořenou podle kurzů REST API klient v Reactu - Filmová databáze nebo Základy Angular frameworku. Můžete se tedy podívat, jak byla vytvořena, a případně si ji i upravit.

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é filmy.

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. Náš server tedy naprogramujeme podle dokumentace, aby poskytoval API (rozhraní), se kterým daný klient umí pracovat.

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.

Naše webové API bude umožňovat provádět operace nad databází filmů, např. vyhledá existující film nebo vloží film nový. 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:

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žívá např. 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 herce

Pro ilustraci si ukažme také to, jak bude vypadat odpověď API, které budeme v kurzu vytvářet. Níže je uvedena odpověď na požadavek klienta na konkrétního herce ve formátu 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
}

Pokud jste se s JSON ještě nesetkali, nemusíte mít strach, brzy si jej vysvětlíme. Naším úkolem tedy bude vytvořit takovouto službu s databází, s níž se bude komunikovat pomocí textových zpráv, jako je ta výše.

V další lekci, REST API v Django REST - SOAP, GraphQL, REST a JSON, se seznámíme s různými typy aplikačních rozhraní, abychom mohli tvořit zajímavé webové aplikace.


 

Všechny články v sekci
REST API v Django - Filmová databáze
Přeskočit článek
(nedoporučujeme)
REST API v Django REST - SOAP, GraphQL, REST a JSON
Článek pro vás napsal Max Snítil
Avatar
Uživatelské hodnocení:
11 hlasů
.
Aktivity