API
API (Application Programming Interface) je formálne definované rozhranie, cez ktoré jeden softvér komunikuje s druhým. Webové API typicky prenáša dáta cez HTTP vo formáte JSON — klient pošle požiadavku, server vráti odpoveď, pričom ani jeden nemusí vedieť nič o vnútornej implementácii toho druhého.
Ako to funguje
Keď mobilná aplikácia zobrazí váš zostatok na účte, nečíta priamo z databázy banky. Pošle požiadavku na bankové API, ktoré overí identitu, skontroluje oprávnenia a vráti presne tie dáta, ktoré sú povolené. API je strážca a prekladateľ zároveň — oddeľuje to, čo systém ponúka navonok, od toho, ako je vnútri postavený. Táto izolácia je fundamentálna pre moderný softvér.
Existuje viacero architektonických štýlov API. REST (Representational State Transfer) je dominantný štandard pre verejné webové API — URL cesty reprezentujú zdroje, HTTP metódy (GET, POST, PUT, DELETE) reprezentujú operácie. Je jednoduchý na pochopenie a má výborné caching vlastnosti. GraphQL dáva klientom kontrolu nad tým, aké dáta dostanú — jeden endpoint, flexibilné dotazy. gRPC je binárny protokol s vysokým výkonom vhodný pre komunikáciu medzi mikroslužbami. tRPC je TypeScript-natívny prístup pre full-stack aplikácie, kde frontend a backend zdieľajú typy.
API kontrakt — definícia toho, čo API prijíma a vracia — je jeden z najcennejších artefaktov v projekte. Dobre zdokumentovaný kontrakt (OpenAPI/Swagger pre REST, schema pre GraphQL, typy routera pre tRPC) umožňuje paralelný vývoj: tím na frontende môže pracovať proti mock implementácii API, kým backendový tím ešte neukončil reálnu implementáciu. Verzovanie API (v1, v2) umožňuje meniť implementáciu bez rozbíjania existujúcich klientov.
Pre produkčné API je kľúčová autentifikácia a autorizácia, rate limiting (obmedzenie počtu požiadaviek za čas), správne HTTP status kódy a konzistentné spracovanie chýb. API bez rate limitingu je otvorená brána pre zneužitie — automatizovaný klient môže zahltiť server tisíckami požiadaviek za sekundu. API bez jasných chybových správ komplikuje ladenie a integrácie tretím stranám.
Z našej praxe
V Strange Loops oddeľujeme interné a externé API. Pre interné aplikácie — komunikácia medzi Next.js frontendom a Fastify backendom — používame tRPC: maximálna typová bezpečnosť, žiadna duplicita typov, rýchly vývoj. Pre externé integrácie — Stripe webhooky, GDS komunikácia v QualiTravel, Mux video API v Ovulogy — používame REST s explicitnou Zod validáciou každej prichádzajúcej správy. Fastify API na DigitalOcean je single source of truth pre biznis logiku; Next.js API routes slúžia len pre SSR potreby a server actions. Každý produkčný projekt má rate limiting na API endpointoch cez Redis.
Kedy to potrebujete
- Prepájate mobilnú aplikáciu s backendom a potrebujete jasne definovaný kontrakt, ktorý bude stabilný naprieč verziami aplikácie
- Integrujete platobnú bránu (Stripe), SMS bránu alebo mapový provider a konzumujete ich verejné API
- Chcete sprístupniť dáta vášho systému externým partnerom alebo tretím stranám s kontrolou nad tým, čo vidia
- Napájate AI agenty alebo MCP servery na interné systémy a potrebujete dobre definovanú vstupnú bránu
Najčastejšie otázky
Aký je rozdiel medzi REST a GraphQL?
REST definuje viacero endpointov, každý pre konkrétny zdroj (/users, /orders) — server rozhoduje, čo vráti. GraphQL má jeden endpoint a klient presne opisuje, aké polia chce dostať. REST je jednoduchší na cachovanie a lepší pre verejné API. GraphQL je vhodnejší pre komplexné aplikácie s viacerými klientmi, ktoré majú rozdielne dátové potreby.
Čo je API kľúč a prečo ho treba chrániť?
API kľúč je tajný reťazec, ktorý identifikuje volajúceho — slúži na autentifikáciu a sledovanie využitia. Ak ho niekto získa, môže volať API vo vašom mene, čerpať vaše kredity alebo pristupovať k dátam. API kľúče nikdy nesmú byť v zdrojovom kóde (git repozitár je verejný alebo zdieľaný) — musia byť v environment premenných alebo správcovi tajomstiev (Doppler, Vault).
Kedy potrebujem vlastné API namiesto priameho prístupu k databáze?
Prakticky vždy, keď k dátam pristupuje viac ako jeden klient, alebo keď klient nie je na serveri pod vašou kontrolou. Vlastné API umožňuje autorizáciu (každý klient vidí len to, čo smie), validáciu vstupov, biznis logiku nezávislú od klienta a budúce zmeny schémy databázy bez dopadu na klientov.
Súvisiace pojmy
tRPC
tRPC je framework, ktorý umožňuje volať serverové funkcie z frontendu s plnou typovou bezpečnosťou — bez generovania kódu, bez REST schém, bez manuálnej synchronizácie typov. TypeScript overí správnosť volania pri kompilácii.
MCP server
MCP (Model Context Protocol) je otvorený štandard od Anthropic, ktorý definuje, ako AI agenty komunikujú s externými systémami — databázami, API, súbormi aj internými nástrojmi. MCP server je program, ktorý túto komunikáciu sprostredkúva.
TypeScript
TypeScript je programovací jazyk od Microsoftu — JavaScript rozšírený o statický typový systém. Kompilátor overí, že funkcie dostávajú správne parametre a objekty majú správnu štruktúru ešte pred spustením kódu, čím zachytí celú triedu chýb, ktoré by inak objavil až používateľ v produkcii.
Potrebujete s tým pomôcť?
Ak riešite niečo z toho, čo tu opisujeme, ozvite sa. Povieme vám, či a ako vieme pomôcť.