Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - REST API v Java Spring Boot - Úvod do webových API

Vítejte v e-learning kurzu Spring Boot, kde se seznámíme s tvořením moderních webových aplikací pomocí REST API. Právě API jsou nejčastější typy projektů v Java Spring. 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 Javě budeme využívat již existujícího javascriptového klienta v React nebo Angular. Ukažme si, jak bude práce s naším API v klientovi vypadat:

REST API ve Spring Boot - Filmová databáze

V dnešním Java Spring tutoriálu si vysvětlíme, proč se moderní webové aplikace dělají pomocí API.

Minimální požadavky

Kurz předpokládá znalosti:

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

Výhodou je zkušenost s:

Pokud nemáte znalosti JavaScriptu, budete moci kurz stejně projít. Jen nebudete rozumět tomu, jak klient funguje, což v zásadě nevadí - zaměřujeme se zde na server v Javě a Springu.

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

Právě startuješ rozsáhlý a pokročilý kurz, ve kterém s každou změnou musíme 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 celkem 9 archivů se vzorovým projektem ke stažení, což v průměru vychází na záchytný bod pro každé 3-4 lekce.

V případě jakéhokoli problému pokračuj ve výkladu a dojdi do nejbližší lekce s archivem a 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 dosavadních kurzech frameworku Spring jsme si vytvořili aplikaci kompletně jen ve Spring Boot. V minulosti se webové aplikace opravdu takto tvořily a doteď se nějaké aplikace takto i tvoří. Hlavně ty, které jsou zaměřené na články (např. ITnetwork takto funguje).

V praxi se dnes ale na webu používá spoustu aplikací, které jsou opravdu spíše aplikacemi než webovými stránkami s články, např. Spotify nebo Google Docs.

Spotify - REST API ve Spring Boot - Filmová databáze

Od takové aplikace čeká uživatel spíše funkčnost jako mají třeba desktopové aplikace běžící v systému Windows a ne jako 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ž by se musela neustále obnovovat a přeblikávat.

Jak funguje aplikace s API?

Taková webová aplikace má potom 2 části a jedná se v podstatě o 2 oddělené aplikace:

  • API server - Aplikace s databází běžící na vzdáleném serveru, 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 komunikuje. 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ů Základy React 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ř. 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 se jedná o:

  • dvě části aplikace - webová stránka si dotahuje ze serveru potřebná data pomocí AJAX dotazu nebo
  • 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 přes ně posílat SMS, zjistit aktuální počasí a podobně.

Ukázka webového API

Malinké, 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 ale o žádnou HTML stránku, nýbrž o surová data ve formátu CSV. Webová API totiž nejsou určená pro lidi, ale pro programy. 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 i jak bude vypadat odpověď API, které budeme v kurzu vytvářet. Níže je uvedena odpověď pro 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, brzy si jej vysvětlíme. Naším úkolem tedy bude vytvořit takovouto službu s databází, se kterou se bude komunikovat pomocí textových zpráv, jako je ta výše.

V další lekci, REST API v Java Spring Boot - 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 ve Spring Boot - Filmová databáze
Přeskočit článek
(nedoporučujeme)
REST API v Java Spring Boot - SOAP, GraphQL, REST a JSON
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
72 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity