Obsah

Čo je API? Stručné vysvetlenie jednoduchými slovami

Tento článok bude užitočný pre každého, kto chce rýchlo pochopiť, čo je API (Application Programming Interface), ako je navrhnuté a funguje, kde a na čo sa používa.

Téma API je veľmi zaujímavá a rozsiahla, preto som materiál rozdelil do troch častí, z ktorých každá je určená pre iné publikum. Ak tejto téme ešte len začínate rozumieť, prečítajte si všetko postupne. A ak už niečo viete, vyberte si časť, ktorá vás zaujíma.

Časť 1 - Jednoduché vysvetlenie API (tento článok)

  1. Čo je API
  2. Ako API funguje
  3. Protokoly API

Časť 2 - Ako napísať API (pracujem na článku)

  1. Najlepšie rámce pre API
  2. Ako vytvoriť vlastné API - FastAPI
  3. Ako napísať dokumentáciu pre API

Časť 3 - Ako zarobiť peniaze pomocou API (pracujem na článku)

  1. Ako zarobiť s API
  2. Užitočné odkazy na API
  3. Kurzy API

Tak poďme na to…

Čo je API

API je skratka pre Application Programming Interface, po slovensky - Aplikačné Programové Rozhranie. V článku nižšie používam len “API”.

Čo je API
Stručne povedané, API je súbor podmienených konvencií, ktoré umožňujú rôznym aplikáciám komunikovať a vzájomne spolupracovať.

Odborníci definujú API ako zmluvu o poskytovaní služieb medzi dvoma aplikáciami. Teda ako každá normálna zmluva, ktorá určuje, ako majú aplikácie (programy, služby) navzájom komunikovať, ako majú formulovať svoje požiadavky a čo očakávať ako odpovede. Mimochodom, dobrí vývojári toto všetko vždy opisujú v dokumentácii API.

Okrem bežnej dokumentácie sú tu ďalšie dôležité vlastnosti dobrého API:

  • Jednoduché pochopenie fungovania
  • Jednoduché používanie aj bez dokumentácie
  • Ťažko sa používa nesprávne (je odolné voči hlúposti)
  • Jednoduché čítanie a údržba kódu, ktorý používa API
  • Dostatočne výkonný na splnenie požiadaviek
  • Jednoduché škálovanie a pridávanie funkcií
  • Spĺňa očakávania používateľov

Ako fungujú API?

Rozhrania API sa zvyčajne vysvetľujú ako interakcia medzi klientom a serverom. Aplikácia, ktorá posiela požiadavku, sa nazýva klient a aplikácia, ktorá posiela odpoveď, sa nazýva server. API zabezpečuje komunikáciu medzi službami prostredníctvom slučiek typu požiadavka-odpoveď. Tieto slučky môžu, ale nemusia vyžadovať internetové pripojenie.

Aplikácie si vymieňajú tieto požiadavky, odpovede a údaje podľa špeciálnych pravidiel, ktoré upravujú používanie a aplikáciu takýchto volaní, definujú prijímané príkazy a typy údajov a stanovujú určité normy pre používanie API. Súbor takýchto pravidiel sa nazýva protokol.

Protokoly API

Na začiatku roka 2000 existovali len dva skutočné protokoly API, o ktorých mala väčšina vývojárov vedieť: SOAP a REST. V posledných rokoch sa však objavilo mnoho nových protokolov, napríklad nové implementácie RPC, GraphQL, Thrift a ďalšie. O niektorých z nich sa dozviete viac nižšie.

SOAP

SOAP (Simple Object Access Protocol) používa súbory XML na prenos údajov medzi webovými službami. Súbory XML sa prenášajú cez HTTP/HTTPS. SOAP poskytuje aj určitú flexibilitu tým, že umožňuje prenos údajov prostredníctvom iných protokolov, ako je napríklad protokol TCP (Transmission Control Protocol), SMTP (Simple Mail Transport Protocol), UDP (User Data Protocol) atď.

Hoci je SOAP stále najrozšírenejší a najstabilnejší, jeho popularita v poslednom čase klesá v porovnaní s novšími protokolmi.

RPC

RPC (Remote Procedure Call) je celá skupina spôsobov, ako môžu rôzne počítače navzájom komunikovať. Takýto systém existuje už od 70. rokov 20. storočia. V skratke, klient vykoná funkciu (alebo procedúru) na serveri a server pošle výsledok späť klientovi. Z technického hľadiska je protokol SOAP príkladom RPC.

V súčasnosti sa používajú tieto implementácie protokolu RPC:

  • JSON-RPC, vytvorený v polovici roku 2000, využíva vo veľkej miere formát JSON, ale podporuje len malý súbor príkazov a neponúka takú flexibilitu ako iné protokoly. Ak však máte jednoduchý prípad použitia API, tento protokol môže byť vhodným riešením.
  • Protokol XML-RPC sa od protokolu JSON-RPC líši len tým, že údaje sa prenášajú ako súbory XML. Na vytváranie dotazov a odpovedí sa používa zabudovaný slovník XML. Klient v požiadavke definuje postup a parametre a server odošle odpoveď, ktorá môže obsahovať údaje alebo popis chyby.
  • Protokol gRPC je ešte novší, spoločnosť Google ho uverejnila v roku 2015 a tiež používa protokol HTTP ako transportnú vrstvu. Na prenos údajov používa formát ProtoBuff. Na rozdiel od iných protokolov gRPC umožňuje vývojárom definovať požadované volania funkcií, a nie vyberať z preddefinovaných možností (ako napríklad GET a PUT v prípade REST).

REST

REST (Representational State Transfer) je v súčasnosti jedným z najpopulárnejších. Hoci treba hneď na začiatku objasniť, že REST nie je protokol, čo znamená, že nemá jasné a všeobecne prijaté pravidlá. REST je len prístup alebo, inými slovami, súbor odporúčaní pre vývojára, ako najlepšie zorganizovať interakciu komponentov jeho aplikácie v sieti. Preto nájdete najrôznejšie rozličnejšie spôsoby implementácie týchto odporúčaní, aké metódy použiť, aký kód vrátiť atď. v závislosti od situácie.

Hlavnými vlastnosťami API REST je, že každá požiadavka klienta (požiadavka REST) na server už obsahuje všetky informácie o tom, čo chce klient v odpovedi (požadovaný stav reprezentanta) od servera, a že server nemusí ukladať údaje klienta (informácie o relácii klienta) medzi rôznymi požiadavkami.

Požiadavky klienta na server sú podobné adresám URL, ktoré zadávate do prehliadača na otvorenie webovej stránky. Odpoveďou zo servera sú jednoduché údaje bez grafického zobrazenia webovej stránky.

Možno ste sa stretli aj s pojmom RESTful. Zvyčajne sa ním označujú webové služby vytvorené s ohľadom na odporúčania REST. Existuje celkom šesť povinných požiadaviek (obmedzení) na budovanie distribuovaných aplikácií REST:

  1. Model klient-server. Aplikácia musí používať architektúru klient-server. Oddelenie potrieb klienta od potrieb servera s údajmi zvyšuje prenosnosť kódu a škálovateľnosť celej aplikácie.
  2. Žiadny stav. Medzi požiadavkami klienta sa na serveri neukladajú žiadne informácie o stave klienta. Všetky požiadavky musia byť navrhnuté tak, aby server dostal všetky informácie, ktoré potrebuje na vykonanie požiadavky.
  3. Ukladanie do vyrovnávacej pamäte. Klienti môžu ukladať odpovede servera do vyrovnávacej pamäte. Odpovede servera zasa musia byť explicitne alebo implicitne označené ako údaje, ktoré možno ukladať do vyrovnávacej pamäte alebo nie, aby sa zabránilo tomu, že klienti dostanú neaktuálne alebo nesprávne údaje.
  4. Zjednotenie rozhraní. Uplatňovanie jednotnosti rozhrania komponentov zjednodušuje architektúru systému a zlepšuje transparentnosť interakcií komponentov. Môže však znížiť efektívnosť, pretože informácie sa prenášajú len v štandardnej forme.
  5. Viacvrstvový systém. Použitie medziľahlých serverov (“vrstiev” v hierarchickej štruktúre siete) môže zlepšiť škálovateľnosť vďaka vyrovnávaniu záťaže a distribuovanému ukladaniu do vyrovnávacej pamäte.
  6. Kód na požiadanie REST umožňuje rozšíriť funkčnosť klienta stiahnutím a spustením kódu vo forme appletu alebo skriptu. To zjednodušuje klienta, pretože môžete znížiť počet funkcií, ktoré je potrebné implementovať vopred.

Medzi výhody REST patrí spoľahlivosť, výkon (vďaka vyrovnávacej pamäti), škálovateľnosť, jednoduchosť používania, podpora a prispôsobenie sa novým požiadavkám, ktoré sa objavia.

GRAPHQL

GraphQL (Graph Query Language) bol vyvinutý v spoločnosti Facebook a vydaný v roku 2015. Je to pokus o prekonanie niektorých obmedzení a nedokonalostí REST.

Hlavnou výhodou jazyka GraphQL je, že klient sám určí požadované údaje a formát vo svojej požiadavke a jazyk GraphQL vráti údaje v rovnakom formáte. Tým sa šetrí čas a pamäť, pretože odpoveďou servera je len nevyhnutné minimum - len údaje, ktoré sú potrebné, a nie hotové súbory s množstvom informácií, ktoré je potrebné ďalej spracovať.

Znižuje sa aj počet samotných požiadaviek HTTP, pretože jazyk GraphQL umožňuje pomocou jedného koncového bodu GraphQL zadávať dotazy do viacerých databáz, mikroslužieb a iných rozhraní API.

APACHE THRIFT

Apache Thrift, podobne ako GraphQL, bol vytvorený v spoločnosti Facebook. Bol vyvinutý so zameraním na dva hlavné ciele: umožnenie interoperability so službami napísanými v rôznych jazykoch a škálovateľnosť.

V podstate ide o implementáciu RPC, ktorá používa mechanizmus generovania kódu v kombinácii so softvérovým zásobníkom na vytvorenie API. Zásobník pomáha pri písaní kódu na strane klienta a servera. Syntax kódu je flexibilná a intuitívna. Špeciálny mechanizmus generuje kód v ľubovoľnom programovacom jazyku, ktorý si vývojár zvolí.

Hlavnou výhodou Thrift je jednoduchosť, s akou umožňuje zmeniť protokol používaný službou po jej definovaní. V kombinácii so skutočnosťou, že Thrift podporuje aj mnoho rôznych transportných metód a niekoľko rôznych implementácií serverových procesov, to znamená, že Thrift je vhodný pre situácie, keď bude potrebné často meniť alebo aktualizovať architektúru a implementáciu API.

Na druhej strane flexibilita, ktorú Thrift poskytuje pri výbere spôsobu implementácie API, môže viesť k menšej organizácii a konzistentnosti ako pri iných protokoloch API, ktoré ponúkajú len jeden spôsob, ako veci robiť.

Kde sa používajú API

Rozhrania API sú všadeprítomné pri interakcii aplikácií medzi sebou a s rôznymi online službami. Sú také všadeprítomné, že ak vypnete všetky API naraz, takmer všetky služby na internete a väčšina aplikácií, na ktoré ste zvyknutí, jednoducho prestanú fungovať.

Vďaka API môžu programátori využívať výhody aplikácií tretích strán bez toho, aby museli písať a udržiavať vlastný kód pre túto úlohu. Ak má napríklad vaša aplikácia zobrazovať počasie, je jednoduchšie použiť verejne dostupné rozhranie API pre počasie na poskytovanie týchto informácií používateľom, ako písať vlastný kód počasia od začiatku.

Ďalšími príkladmi takýchto služieb sú API pre registráciu používateľov, služby platobného systému, sociálne siete a mnohé ďalšie. Viac o tom budem hovoriť v tretej časti.

Teraz, keď sme pochopili, čo je to API a ako to celé funguje, pozrime sa na nástroje, ktoré môžete použiť na rýchle a efektívne napísanie API.

Časť 2 - Ako napísať API - už čoskoro!

Časť 3 - Ako zarobiť peniaze pomocou API - na článku sa stále pracuje.

😎