Preskočiť na obsah
Architektúra

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.

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ť.