Backend/Server

API (Application Programming Interface)

Co je to API?

API neboli Application Programming Interface (rozhraní pro programování aplikací) je soubor pravidel a protokolů, který umožňuje různým aplikacím spolu komunikovat a vyměňovat si data. Představte si API jako menu v restauraci – vidíte, co si můžete objednat a jak to objednávka vypadá, ale nevidíte, co se děje v kuchyni. Stejně tak API definuje, jaká data můžete požadovat od aplikace a v jakém formátu je dostanete, aniž byste museli vědět, jak aplikace funguje uvnitř.

V kontextu moderního webu je API naprosto klíčové – umožňuje propojit váš web s platebními bránami, sociálními sítěmi, mapami, rezervačními systémy nebo jakýmikoliv jinými službami. Díky API nemusíte programovat všechno od nuly, ale můžete využít hotová řešení od jiných poskytovatelů a integrovat je do svého webu. Když například chcete na svůj e-shop přidat platební bránu, není potřeba vyvíjet vlastní platební systém – využijete API od Stripe, PayPal nebo GoPay.

API je v podstatě smlouva mezi dvěma aplikacemi. Poskytovatel API (například Google Maps) říká: "Pokud mi pošleš požadavek v tomto formátu, vrátím ti data v tomto formátu." Vaše webová aplikace pak tento kontrakt dodržuje a díky tomu můžete zobrazovat mapy bez nutnosti budovat vlastní mapový systém. Tato architektura umožňuje backendu a frontendu pracovat nezávisle a zároveň efektivně komunikovat.

Jak API funguje v praxi?

Když váš web potřebuje data z jiné aplikace, odešle API požadavek (request) na určitou URL adresu, tzv. API endpoint. Tento požadavek obsahuje informaci o tom, jaká data chcete (například „seznam produktů" nebo „informace o uživateli"). Backend server, který API poskytuje, požadavek zpracuje, najde požadovaná data v databázi a vrátí odpověď (response), obvykle ve formátu JSON nebo XML.

Celá komunikace probíhá pomocí HTTP protokolu – stejně jako když načítáte běžnou webovou stránku. Moderní webové aplikace používají REST API, které pracuje s HTTP metodami: GET pro načítání dat, POST pro vytváření nových záznamů, PUT pro aktualizaci existujících dat a DELETE pro mazání.

API také často vyžaduje autentizaci pomocí API klíče nebo tokenu, aby zajistilo, že data poskytuje pouze oprávněným aplikacím. To je důležité zejména u komerčních API, která mají limity na počet požadavků nebo poskytují citlivá data. Například API pro platební bránu musí být důkladně zabezpečené pomocí SSL certifikátů a šifrované komunikace.

Praktický příklad: Když uživatel na vašem e-shopu vyplní formulář s doručovací adresou, frontend odešle Ajax požadavek na váš backend API endpoint /api/validate-address. Backend pomocí externího API (například České pošty) ověří, že adresa existuje, a vrátí odpověď ve formátu JSON. Frontend pak zobrazí uživateli potvrzení nebo chybovou hlášku. Celý proces proběhne asynchronně bez nutnosti obnovit stránku.

Typy API a jejich využití

  • REST API

  • Nejrozšířenější typ API, který používá standardní HTTP metody a URL strukturu. REST API je jednoduchý, škálovatelný a srozumitelný. Většina moderních webových služeb (Google, Facebook, Stripe, Twilio) poskytuje REST API. Výhodou je, že pracuje s běžnými web technologiemi, takže ho lze snadno implementovat v jakémkoliv programovacím jazyce – ať už používáte PHP, JavaScript nebo jakýkoliv jiný jazyk. REST API vrací data většinou ve formátu JSON, který je kompaktní a snadno zpracovatelný.

  • GraphQL

  • Moderní alternativa k REST API vyvinutá Facebookem. Hlavní výhodou je, že klient může přesně specifikovat, jaká data chce, a dostane právě ta – nic navíc. To šetří datový přenos a zrychluje aplikace, což je zásadní pro výkon webu na mobilních zařízeních. GraphQL má jednu URL endpoint, na kterém se posílají dotazy v GraphQL jazyce. Používají ho například GitHub, Shopify nebo Twitter. Pro začátečníky může být složitější než REST, ale nabízí větší flexibilitu při práci s komplexními daty.

  • SOAP API

  • Starší, ale stále používaný protokol zejména v korporátním prostředí (bankovnictví, pojišťovnictví). SOAP používá XML formát a má velmi přísná pravidla. Je složitější na implementaci než REST, ale nabízí robustní bezpečnostní mechanismy a standardizovanou chybovou zprávu. Pro běžný web jej však dnes téměř nikdo nepoužívá – REST nebo GraphQL jsou praktičtější volby.

  • Webhook API

  • Speciální typ API, kde nevyžadujete data vy, ale server vám je automaticky pošle, když nastane určitá událost (event). Například když někdo zaplatí objednávku, Stripe webhook pošle notifikaci na váš server. Webhooks jsou ideální pro real-time notifikace a automatizaci procesů. Využívají se třeba pro synchronizaci dat mezi systémy nebo pro spouštění automatických akcí.

Praktické příklady použití API

API najdete prakticky na každém moderním webu. Podívejme se na konkrétní případy použití, se kterými se můžete setkat při tvorbě webu:

  • Platební brány

  • Pokud provozujete e-shop nebo nabízíte online služby, určitě budete potřebovat platební bránu. API od Stripe, PayPal, GoPay nebo CardPay umožňuje přijímat platby kartou, bankovním převodem nebo alternativními metodami. Integrace probíhá tak, že váš web odešle požadavek na API platební brány s informacemi o objednávce a zákazníkovi. API zpracuje platbu a vrátí výsledek – zda byla platba úspěšná či nikoliv. Díky webhookům vás API může notifikovat i o opožděných platbách nebo chargebackech.

  • Mapy a geolokace

  • Google Maps API, Mapy.cz API nebo OpenStreetMap API umožňují zobrazit interaktivní mapu na vašem webu, vyhledat adresu, spočítat vzdálenost nebo navigovat k cíli. Používá se například na kontaktních stránkách, u pobočkových systémů, na rezervačních portálech nebo u služeb rozvozu. API vám vrátí GPS souřadnice, umí geocoding (překlad adresy na souřadnice) i reverse geocoding (souřadnice na adresu).

  • Sociální sítě a autentizace

  • Facebook API, Google API nebo Twitter API umožňují přihlášení uživatelů pomocí jejich sociálních účtů (OAuth), sdílení obsahu na sociální sítě, načítání příspěvků, počtu followerů nebo zobrazování Instagram galerie. To výrazně zjednodušuje registraci a přihlašování – uživatelé nemusí vyplňovat dlouhé formuláře a vy získáte ověřené údaje.

  • E-mailing a notifikace

  • API pro newsletter služby (Mailchimp, SendGrid, MailerLite) umožňují přidávat odběratele, odesílat hromadné e-maily, měřit otevřenost a prokliky nebo segmentovat kontakty. API pro SMS brány (Twilio, Nexmo) nebo push notifikace (OneSignal, Firebase) rozšiřují komunikační kanály s vašimi zákazníky.

  • Cloudová úložiště a media

  • Cloudinary API, AWS S3 API nebo Dropbox API slouží k nahrávání, ukládání a optimalizaci obrázků a videí. Můžete automaticky měnit velikost fotek, generovat thumbnaily, převádět video formáty nebo aplikovat filtry – vše na straně serveru API. To šetří výkon vašeho hostingu a zrychluje web.

  • Analytics a tracking

  • Google Analytics API nebo Matomo API umožňují získávat data o návštěvnosti programově, vytvářet vlastní dashboardy nebo automatizovat reporty. Můžete načítat počet návštěvníků, nejnavštěvovanější stránky, bounce rate nebo konverze a zobrazovat je přímo ve vlastním administračním rozhraní.

Výhody a nevýhody API

Výhody:

  • Rychlejší vývoj

  • Nemusíte programovat funkcionalitu od nuly, využijete hotové řešení. Například integrace platební brány pomocí API trvá hodiny až dny, zatímco vlastní platební systém by zabral měsíce práce a vyžadoval by bezpečnostní certifikace.

  • Přístup k pokročilým funkcím

  • Můžete využít služby, které byste sami nedokázali vytvořit – umělá inteligence, strojové učení, rozpoznávání řeči, mapové služby s real-time dopravními údaji, platební systémy s ochranou proti podvodům. API od velkých technologických firem jako Google, Amazon nebo Microsoft nabízejí služby s masivní infrastrukturou na pozadí.

  • Automatizace a škálovatelnost

  • API umožňuje propojit různé systémy a automatizovat procesy. Například po zaplacení objednávky se automaticky vytvoří záznam v CRM, odešle email zákazníkovi, aktualizuje skladové zásoby a vygeneruje faktura. Vše probíhá bez lidského zásahu díky propojení různých API.

  • Aktuální data v reálném čase

  • API poskytuje real-time data z jiných systémů. Kurzovní lístek na webu banky, aktuální počasí, live výsledky sportovních zápasů nebo dostupnost zboží na e-shopu – vše se načítá dynamicky z API a je vždy aktuální.

  • Nezávislost frontendu a backendu

  • API vytváří jasné rozhraní mezi frontendovou a backendovou částí aplikace. Frontend může být napsaný v Reactu nebo Vue.js, backend v PHP nebo Node.js – komunikují přes API a mohou být vyvíjeny nezávisle různými týmy.

Nevýhody:

  • Závislost na poskytovateli

  • Pokud poskytovatel API změní podmínky, zvýší ceny, omezí funkcionalitu nebo ho úplně vypne, může to výrazně ovlivnit váš web. Například Twitter v roce 2023 drasticky zdražil přístup k API, což zničilo mnoho aplikací postavených na jejich datech. Je důležité mít záložní plán nebo alternativní řešení.

  • Bezpečnostní rizika

  • Špatně zabezpečené API může být vstupní branou pro útoky. Pokud necháte API klíče ve veřejném JavaScriptovém kódu nebo je neomezte IP adresami, útočníci je mohou zneužít. Nezabezpečené API může také unikat citlivá data uživatelů. Proto je důležité používat HTTPS, API klíče ukládat na serveru a implementovat validaci vstupů.

  • Náklady při růstu

  • Většina API má free tier s omezeným počtem požadavků a za vyšší využití se platí. Když váš web roste a generuje více trafficu, náklady na API mohou výrazně vzrůst. Například Google Maps API může při vysoké návštěvnosti webu stát tisíce měsíčně. Je potřeba pečlivě sledovat využití a cachovat data, kde je to možné.

  • Kvalita dokumentace

  • Kvalita dokumentace API se různí. Některá API mají vynikající dokumentaci s příklady kódu, interaktivním playground a detailním popisem každého endpointu. Jiná API mají dokumentaci zastaralou, neúplnou nebo špatně strukturovanou, což výrazně komplikuje implementaci a řešení problémů.

  • Rate limiting a limity požadavků

  • Většina API omezuje počet požadavků za časovou jednotku (například 100 požadavků za minutu). Pokud limit překročíte, API vrátí chybu a vaše aplikace přestane fungovat, dokud se limit neresetuje. To může způsobit problémy při nárazovém nárůstu návštěvnosti nebo při neefektivně napsaném kódu, který posílá zbytečně mnoho požadavků.

Best practices při práci s API

Při implementaci API do vašeho webu je důležité dodržovat osvědčené postupy, které zajistí bezpečnost, výkon a dlouhodobou udržitelnost:

  • Zabezpečení API klíčů

  • Nikdy neukládejte API klíče přímo do frontendového JavaScriptu nebo HTML kódu, kde jsou veřejně viditelné. API klíče musí být uložené na serveru a požadavky na externí API by měly procházet přes váš backend. Využívejte proměnné prostředí (environment variables) pro ukládání citlivých údajů a nepublikujte je do veřejného Git repositáře.

  • Cachování odpovědí

  • Pokud API vrací data, která se nemění příliš často (například kurzy měn jednou denně, počasí co hodinu), implementujte cachování. Uložte si odpověď z API do cache nebo databáze a načítejte ji odtud místo opakovaných dotazů na API. To šetří náklady, zrychluje web a snižuje riziko překročení rate limitů.

  • Error handling

  • API mohou být dočasně nedostupná nebo vracet chyby. Vždy implementujte řádné ošetření chyb – pokud API neodpoví, zobrazte uživateli srozumitelnou hlášku nebo fallback obsah místo prázdné stránky. Logujte chyby, abyste mohli sledovat problémy s API a rychle je řešit.

  • Monitoring a limity

  • Sledujte, kolik požadavků na API vaše aplikace odesílá, a nastavte si upozornění, pokud se blížíte k limitům. Mnoho poskytovatelů API nabízí dashboard s metrikami využití. Používejte nástroje pro tracking a monitoring API requestů.

Nejčastější otázky o API

Co je to API jednoduše vysvětleno? Rozbalit

API neboli rozhraní pro programování aplikací je jako menu v restauraci – definuje, co si můžete objednat (jaká data či funkce jsou dostupné) a jak si to objednat (jaký formát požadavku použít), aniž byste museli vědět, jak se jídlo připravuje (jak funguje vnitřní logika aplikace). API umožňuje různým aplikacím spolu komunikovat a sdílet data bezpečným a strukturovaným způsobem.

K čemu se API používá na webu? Rozbalit

API se na webu používá pro integraci externích služeb – zobrazení mapy z Google Maps, platební brána pro e-shop, přihlášení přes Facebook nebo Google, načítání příspěvků ze sociálních sítí, rezervační systémy, online chaty a mnoho dalšího. Díky API nemusíte tyto funkce programovat od nuly, ale využijete hotové řešení od jiných poskytovatelů.

Jaký je rozdíl mezi REST API a jiným API? Rozbalit

REST API je nejrozšířenější architektonický styl pro tvorbu API, který používá standardní HTTP metody (GET, POST, PUT, DELETE) a pracuje s URL adresami zdrojů. Je jednoduchý, škálovatelný a srozumitelný. Alternativy jako GraphQL umožňují flexibilnější dotazování (klient si řekne přesně o jaká data stojí), zatímco SOAP je starší, XML-based protokol s přísnějšími pravidly, používaný v enterprise prostředí.

Potřebuji API pro běžný web? Rozbalit

Záleží na funkcionalitě webu. Pokud chcete integrovat platební bránu, online chat, rezervační systém, zobrazovat obsah ze sociálních sítí, používat mapy nebo jakoukoliv externí službu, budete potřebovat její API. Pokud je web pouze informační bez interaktivních funkcí, možná API nepotřebujete. Moderní weby však velmi často některé API využívají.

Je API bezpečné? Rozbalit

API samo o sobě není ani bezpečné, ani nebezpečné – záleží na implementaci. Kvalitní API používá autentizaci (API klíče, OAuth tokeny), šifrovanou komunikaci (HTTPS), rate limiting (omezení počtu požadavků), validaci vstupů a další bezpečnostní mechanismy. Nikdy nesdílejte API klíče veřejně a používejte pouze důvěryhodná API od ověřených poskytovatelů.

Související pojmy