Základní přehled API a REST
API, neboli aplikační programové rozhraní, funguje jako most umožňující aplikacím vzájemně komunikovat a sdílet zdroje. Umožňuje jedné aplikaci přistupovat k funkcím nebo datům jiné aplikace.
Použití API přináší výhodu v řízení přístupu k datům. Aplikace třetích stran tak nemají neomezený přístup k celému obsahu, ale pouze k specifickým datům, která jim byla zpřístupněna prostřednictvím definovaného API.
V komunikaci přes API se používá termín klient pro aplikaci nebo uživatele, který o data žádá, a server pro aplikaci, která data poskytuje a obsluhuje.
Dnes jsou API nepostradatelnou součástí téměř každé softwarové architektury. Znalost API je klíčová pro mnoho pozic, ať už jde o vývoj front-endu, back-endu, full-stack nebo síťové inženýrství, a otázky týkající se API jsou běžnou součástí pohovorů.
Pojďme se nyní podívat na nejčastější dotazy ohledně REST API, které se mohou objevit při pracovním pohovoru.
Co je to REST?
REST je architektonický styl, který definuje sadu pravidel a omezení pro návrh API. API, která se těmito pravidly řídí, se nazývají RESTful API. REST je zkratka pro Representational State Transfer.
Nejedná se o protokol ani standard, ale o architekturu, kterou lze různými způsoby implementovat při vytváření API.
REST poskytuje vývojářům velkou míru flexibility a svobody, což z něj činí oblíbenou volbu pro návrh API. Mezi klíčové principy REST architektury patří:
- Oddělení klienta a serveru: Klient by neměl ovlivňovat server jinak než prostřednictvím URI (Uniform Resource Identifier). Server by naopak neměl upravovat chování klienta.
- Bezstavovost: Každý požadavek je nezávislý a neví o ostatních. Požadavky neudržují stav a po zpracování se ukončí.
- Vrstvená architektura: Klient ani server nemusí vědět, zda požadavek směřuje přímo k cílové aplikaci, nebo prochází mezivrstvou. Důležitá je pouze odpověď.
- Ukládání do mezipaměti: Data nebo odpovědi lze ukládat na straně klienta i serveru pro zvýšení výkonu a škálovatelnosti. Opakované požadavky lze obsloužit z mezipaměti.
Jaké jsou klíčové vlastnosti REST?
Klíčové charakteristiky REST jsou:
- Flexibilita: REST API poskytuje stejnou odpověď pro daný požadavek bez ohledu na server. Lze snadno přidávat nové koncové body pro různé datové typy.
- Škálovatelnost: Ukládání do mezipaměti zlepšuje škálovatelnost tím, že snižuje zatížení serveru a minimalizuje latenci.
- Autorizace: Autentizační údaje lze předávat v hlavičce požadavku pro autorizaci přístupu k datům.
- Bezstavovost: Požadavky jsou izolované a ukončují se po zpracování, což zabraňuje tomu, aby se vzájemně ovlivňovaly.
Co jsou zdroje v REST architektuře?
Zdroje jsou entity, se kterými se provádí interakce – data se načítají, aktualizují nebo odstraňují. Jsou základními stavebními bloky REST architektury.
Například, v e-shopu jsou produkty, uživatelé a metadata zdroje, se kterými lze pracovat a které lze pomocí API přenášet mezi aplikacemi.
Jaké jsou výhody a nevýhody REST API?
Výhody REST API:
- Jednoduchá implementace.
- Snadná manipulace se zdroji.
- Škálovatelnost díky architektuře klient-server.
- Podpora různých datových formátů, jako je XML a JSON.
Nevýhody REST API:
- Bezstavovost – není možné uchovávat kontext mezi požadavky.
- Vrstvená architektura může ztížit dohledání původu zdroje.
- Není ideální pro komplexní dotazy a požadavky.
Co je REST Template?
REST Template je klient nebo nástroj v rámci Spring frameworku pro snadnější přístup k REST API. Zjednodušuje proces zasílání požadavků, jelikož skrývá standardní kód, který by jinak bylo nutné napsat.
Co znamená RESTful?
RESTful API, neboli služby, implementují architektonický styl REST a využívají protokoly jako HTTP.
Co jsou RESTful webové služby?
RESTful webové služby jsou navrženy pro optimální fungování na webu. Díky implementaci omezení definovaných architekturou REST, jako je jednotné rozhraní, vrstvená architektura a bezstavovost, dosahují požadované vlastnosti, jako je výkon a škálovatelnost v webovém prostředí.
Jak lze testovat RESTful webové služby?
Pro testování RESTful webových služeb lze použít REST klienty, jako je Postman nebo Thunder Client. Po zaslání dotazu a obdržení odpovědi je klíčové odpověď analyzovat.
Pro rozsáhlé API s mnoha koncovými body je vhodné testování rozdělit na menší celky a provést unit testy, integrační testy, výkonnostní testy a end-to-end testy.
Jaké jsou klíčové funkce RESTful webových služeb?
Mezi klíčové funkce RESTful webových služeb patří:
- Podpora různých formátů, například JSON a XML.
- Škálovatelnost.
- Izolace klienta a serveru.
- Flexibilita.
Definujte RESTful Root Resource Classes.
Třídy kořenových prostředků jsou POJO (Plain Old Java Objects) označené anotací @Path, případně mají alespoň jednu metodu označenou @Path nebo metodovou anotaci pro typ požadavku jako @GET, @POST, @PUT nebo @DELETE.
Co je URI?
URI, neboli Uniform Resource Identifier, je sekvence znaků pro identifikaci zdroje v rámci API nebo služby. Používá název nebo umístění zdroje, ale nezávisí na konkrétní metodě nebo technice.
Co je bezstavovost v REST?
Bezstavovost je omezení, kdy žádné dva požadavky na API nemají vzájemnou znalost o tom, co se mezi nimi děje. Stav požadavků se neuchovává. Po zpracování požadavku se spojení ukončí.
Co je JAX-RS?
JAX-RS je Java API, které umožňuje vytvářet aplikace v Javě s využitím architektury REST. Usnadňuje vývoj REST aplikací v jazyce Java.
Jaké jsou klíčové anotace v JAX-RS API?
Vývojáři používají anotace v JAX-RS k označení tříd v Javě a definování zdrojů a metod, které na nich lze provádět. Mezi klíčové anotace patří:
- @GET: Pro vytváření GET požadavků v HTTP.
- @POST: Pro vytváření POST požadavků v HTTP.
- @Path: Pro relativní cestu ke třídě v Javě.
- @QueryParam: Pro parametry dotazu v URI nebo URL.
Jaké jsou klíčové vlastnosti JAX-RS API?
Vlastnosti JAX-RS:
- Ukládání do mezipaměti na straně klienta.
- Ukládání do mezipaměti na straně serveru.
- Přizpůsobení dotazovacích řetězců.
- Runtime anotace.
Jak lze konfigurovat aplikace JAX-RS?
Aplikace JAX-RS se skládá minimálně z jedné třídy zdroje zabalené do souboru WAR. Základní URI, ze kterého aplikace reaguje na požadavky, lze nastavit:
- Pomocí anotace @ApplicationPath v podtřídě javax.ws.rs.core.Application uvnitř WAR.
- Použitím značky servlet-mapping v deskriptoru nasazení web.xml souboru WAR.
Co jsou JAX-WS a JAX-RS?
JAX-WS je Jakarta XML Web Services API používané pro tvorbu API pomocí protokolu SOAP (Simple Object Access Protocol) založeného na XML.
JAX-RS je Java API pro vytváření webových služeb s využitím architektury REST.
Co jsou stavové kódy HTTP?
Stavové kódy HTTP slouží k informování klienta o stavu odpovědi ze serveru. Jsou součástí hlaviček odpovědí zasílaných ze serveru.
Klient pomocí stavových kódů pozná, zda byl požadavek úspěšný, neúspěšný nebo zda došlo k nějakému problému.
Mezi běžné stavové kódy HTTP patří:
- 200 – „OK“, požadavek byl úspěšně zpracován.
- 404 – „Not Found“, zdroj na serveru nenalezen.
- 500 – „Internal Server Error“, chyba serveru, která brání správnému vygenerování odpovědi.
- 503 – „Service Unavailable“, server dočasně nemůže zpracovat požadavky, například z důvodu údržby nebo přetížení.
Co jsou HTTP metody?
HTTP metody se používají k provádění konkrétních akcí nad zdroji API. Metoda GET se používá k načtení dat, POST k aktualizaci, DELETE ke smazání.
Nejpoužívanější HTTP metody:
- GET: Načítání dat.
- POST: Aktualizace zdroje odesláním nového zdroje na server.
- DELETE: Odstranění zdroje.
- PATCH: Částečná úprava zdroje.
Jak funguje základní ověřování HTTP?
Autentizace ověřuje identitu klienta a zajišťuje bezpečnost dat. V HTTP funguje autentizace pomocí hlavičky autorizace, kterou klient odesílá.
Hlavička autorizace obsahuje uživatelské jméno a heslo, které server ověří. Pokud je ověření úspěšné, udělí se přístup.
Důležité je, že při použití HTTP autentizace by měl být přenos autentizačních údajů šifrovaný a zabezpečený, například pomocí protokolu HTTPS s SSL vrstvou.
Z jakých částí se skládá HTTP požadavek?
HTTP požadavek se skládá z těchto částí:
- Řádek požadavku: První řádek s metodou HTTP, cestou (endpointem) a verzí HTTP.
- Hlavičky: Metadata požadavku.
- Tělo (volitelné): Skutečná data posílaná v požadavku, používá se u některých metod jako POST.
Z jakých částí se skládá HTTP odpověď?
HTTP odpověď obsahuje:
- Stav: Stavový kód HTTP ze serveru.
- Hlavičky: Informace o odpovědi.
- Zpráva: Skutečná data, která server posílá klientovi.
Jaký je rozdíl mezi REST a AJAX?
AJAX je klient, pomocí kterého lze přistupovat k RESTful API. Používá se pro odesílání asynchronních požadavků pomocí JavaScriptu.
REST je architektonický styl pro návrh RESTful API. AJAX je nástroj pro odesílání HTTP požadavků, ale pro implementaci RESTful API je třeba dodržovat principy REST.
Jaký je rozdíl mezi SOAP a REST?
REST je architektura pro tvorbu API s minimálními omezeními. SOAP je protokol s přísnými pravidly pro implementaci API.
REST je flexibilnější a jednodušší než SOAP. SOAP používá XML zprávy, zatímco REST podporuje různé datové formáty (JSON, XML). REST je rychlejší a méně náročný.
SOAP má vestavěné zabezpečení, což je jeho výhoda, ale zároveň je složitější na používání.
Jaký je rozdíl mezi PUT a POST?
POST odesílá data na server. Při opakovaném odeslání POST požadavku pro konkrétní zdroj se mohou data duplikovat. Například, při opakovaném odeslání POST pro přidání nového článku se může stát, že se článek do kolekce přidá vícekrát.
PUT aktualizuje data pro konkrétní zdroj. Pokud se PUT pro jeden zdroj odesílá opakovaně, data se aktualizují pouze jednou. Pokud zdroj neexistuje, PUT jej vytvoří, pokud existuje, aktualizuje. PUT je idempotentní, POST není.
Co je payload?
Payload je tělo požadavku odesílané z klienta na server. Jsou to data, která se zasílají na server pro získání odpovědi.
Jaká je maximální velikost payloadu pro POST požadavky?
Protokol HTTP sám o sobě nestanovuje limit pro velikost payloadu. Limit závisí na maximálním limitu klienta nebo serveru, přičemž platí minimální hodnota z obou stran.
Jaké jsou doporučené postupy při vytváření URI?
Při návrhu URI je vhodné:
- Vyhnout se používání přípon souborů.
- Udržovat konzistenci.
- Rozdělit URI na domény a subdomény pro různé zdroje.
- Používat pomlčku nebo podtržítko pro oddělení slov ve větách v URI.
- Používat lomítko pro označení hierarchie zdrojů.
- Kódovat URI.
- Snažit se, aby URI bylo čitelné pro člověka.
Co jsou idempotentní metody?
Idempotentní metody HTTP mají stejný efekt na server i při opakovaném odeslání stejného požadavku. Například opakované odeslání DELETE pro konkrétní zdroj jej nesmaže opakovaně, ale jakoby byl odeslán pouze jednou.
Idempotentní metody:
- PUT
- DELETE
- GET
- HEAD
- OPTIONS
Co je Postman?
Postman je nástroj pro vývoj, úpravy a testování API. Nabízí mnoho funkcí pro rychlou tvorbu a testování API bez nutnosti nastavení klienta.
Co je hlavička Cache-Control?
Hlavička Cache-Control slouží pro konfiguraci ukládání do mezipaměti v prohlížečích a na serverech. Určuje, co a na jak dlouho má být uloženo v mezipaměti, než se znovu vyžádá z datového zdroje.
Direktivy hlavičky Cache-Control:
- max-age
- no-cache
- private
- public
- no-store
- immutable
Definujte zasílání zpráv v RESTful webových službách.
Zasílání zpráv v RESTful službách spočívá v tom, že klient odesílá HTTP požadavek na server, na který server odpovídá HTTP odpovědí. Tato komunikace mezi klientem a serverem je zasílání zpráv.
Jaký je rozdíl mezi monolitickou architekturou, architekturou SOA a architekturou mikroslužeb?
V monolitické architektuře je vše centralizováno na jednom místě. Klient, server i databáze jsou spravovány z jediného místa. Proto se nazývá monolitická – jeden blok.
SOA (Service-Oriented Architecture) je architektura, kde jsou různé aspekty aplikace spravovány různými softwarovými službami. Jedná se o kombinaci více modulů. Klíčovou součástí je integrace.
Mikroslužby se podobají SOA, ale na rozdíl od SOA má několik samostatných softwarových programů komunikujících pomocí API. Na rozdíl od monolitické architektury je zde vše autonomní a do určité míry nezávislé.
Jak funguje architektura mikroslužeb?
V mikroslužbové architektuře jsou aplikace rozděleny do menších podjednotek, které jsou nezávislé, ale komunikují spolu prostřednictvím definovaného API.
Mezi výhody architektury mikroslužeb patří agilita, flexibilita, škálovatelnost, nezávislé technologie, opakovaně použitelné služby a snadné nasazení.
Co je CRUD?
CRUD je zkratka pro Create, Read, Update, Delete. Jsou to operace, které se provádí se zdrojem. API, které podporuje tyto operace, se nazývá CRUD API. Jedná se o nejzákladnější operace, které API umí s prostředkem provést.
Co je ukládání do mezipaměti?
Ukládání do mezipaměti je technika ukládání odpovědi nebo požadavku na straně klienta nebo serveru pro pozdější použití.
Odpovědi se typicky ukládají do mezipaměti klienta, aby se zabránilo opakovanému zasílání stejných požadavků přes síť v krátkém časovém intervalu.
Jaké je využití anotace @RequestMapping?
@RequestMapping je anotace v Spring frameworku pro mapování webových požadavků na konkrétní třídy nebo metody obslužných rutin.
Co dělá anotace @PathVariable?
Anotace @PathVariable v Spring frameworku se používá k extrahování hodnot proměnných ze šablony v URI a přiřazení jejich hodnoty proměnné metody.
Co je HttpMessageConverter?
HttpMessageConverter se používá v situacích, kdy je potřeba převést HTTP požadavek (nebo jeho části) na typ potřebný jako argument pro metodu obslužné rutiny. Dále se používá při převodu hodnoty vrácené z obslužné metody na odpověď HTTP.
Jaké nástroje lze použít pro testování API?
Nástroje pro testování API:
- Postman
- Rest Client
- Rest Sharp
- Katalon
- ReadyAPI
- Apigee
Závěrem
Díky rozvoji internetu se API stala extrémně populární. REST API jsou populární, protože se snadno vyvíjejí a používají.
Pokud se připravujete na pracovní pohovor, zvažte výše uvedené otázky týkající se REST API. Můžou být položeny během pohovoru.
Dále si můžete prozkoumat možnosti extrakce dat z webových stránek pomocí Wdzwdz Web Scraping API.