====== API – Rozhraní pro programování aplikací ====== **API** (zkratka z anglického **Application Programming Interface**) představuje soubor definovaných pravidel, protokolů a nástrojů, které umožňují vzájemnou komunikaci a výměnu dat mezi různými softwarovými aplikacemi. V praxi API funguje jako prostředník (poslíček), který přijímá požadavek od klienta, doručí jej systému, a následně vrátí odpověď zpět uživateli. Díky tomu vývojáři nemusí vědět, jak je cílový systém vnitřně naprogramován; stačí jim znát rozhraní, které jim systém poskytuje. ===== 1. Jak API funguje? ===== Princip API lze přirovnat k menu v restauraci: * **Zákazník (Uživatel/Aplikace):** Vybírá si z nabídky dostupných funkcí. * **Menu (API):** Seznam operací, které lze provést, a formát, v jakém musí být požadovány. * **Kuchyně (Server/Systém):** Vykoná požadovanou logiku a připraví data. ---- ===== 2. Hlavní typy API ===== Podle způsobu přístupu a účelu dělíme rozhraní do několika kategorií: ==== Webová API (Nejrozšířenější) ==== Umožňují komunikaci mezi webovým prohlížečem a serverem, nebo mezi dvěma servery přes internet (protokol HTTP). * **REST (Representational State Transfer):** Dnes nejpopulárnější standard. Využívá HTTP metody (GET, POST, PUT, DELETE) a data přenáší nejčastěji ve formátu **JSON**. * **SOAP (Simple Object Access Protocol):** Starší, robustnější protokol založený na XML. Často využíván v bankovnictví pro vysokou úroveň zabezpečení. * **GraphQL:** Moderní dotazovací jazyk od Meta (Facebooku), který umožňuje klientovi přesně definovat, jaká data chce dostat (řeší problém over-fetchingu). ==== Knihovní a OS API ==== Umožňují programům komunikovat s operačním systémem nebo využívat funkce specifických knihoven. * **Win32 API:** Pro aplikace v systému Windows. * **POSIX:** Standard pro unixové systémy (Linux, macOS). ---- ===== 3. Formáty přenosu dat ===== Aby si dvě aplikace rozuměly, musí data posílat v dohodnutém formátu. Nejčastěji se setkáváme s: ^ Formát ^ Charakteristika ^ | **JSON** | JavaScript Object Notation. Lehký, čitelný pro lidi i stroje. Standard pro REST. | | **XML** | Extensible Markup Language. Hierarchický, přísně strukturovaný, ale datově objemnější. | | **YAML** | Často využíván pro konfigurační API (např. Kubernetes, Docker). | ---- ===== 4. Proč je API důležité? ===== * **Abstrakce:** Vývojář nemusí znát složitost backendu (např. složité SQL dotazy), stačí mu zavolat funkci ''get_users()''. * **Integrace:** Umožňuje propojit nesourodé systémy (např. platební brána Stripe na vašem e-shopu). * **Škálovatelnost:** Mobilní aplikace i webová stránka mohou používat stejné API pro přístup k datům. * **Automatizace:** API umožňuje programům ovládat jiné programy bez lidského zásahu. ---- ===== 5. Bezpečnost a autentizace ===== Vzhledem k tomu, že API otevírá přístup k datům, musí být chráněno: * **API Key:** Unikátní řetězec identifikující volající aplikaci. * **OAuth 2.0:** Standard pro delegovanou autorizaci (např. "Přihlásit se přes Google"). * **Rate Limiting:** Omezení počtu požadavků za minutu, aby nedošlo k přetížení serveru (ochrana proti DoS útokům). ===== Závěr ===== API je "lepidlem" moderního internetu. Bez něj by neexistovaly mapy v aplikacích pro rozvoz jídla, sdílení příspěvků mezi sociálními sítěmi ani propojení cloudových služeb. Výběr správného typu rozhraní (REST vs. GraphQL) je klíčovým rozhodnutím při návrhu jakéhokoli softwarového systému.