API-ji povezujejo aplikacije prek jasnih protokolov in arhitektur. Arhitektura API je okvir pravil za ustvarjanje programskih vmesnikov. Pravila določajo, kako uporabnikom zagotoviti funkcionalnost strežnika. Vrsta arhitekture določa pravila in strukture, ki urejajo API.
Obstaja veliko različnih vrst arhitekture API-jev, od REST do RPC. Spoznavanje njihove strukture in sestave vam bo pomagalo izbrati enega za vašo aplikacijo.
1. POČITEV
API-ji REST so moderne in so najbolj priljubljena arhitektura API, ki jo razvijalci uporabljajo. POČITEV (representational state transfer) je arhitektura, ki se uporablja za načrtovanje aplikacij odjemalec-strežnik. To ni protokol ali standard, zato ga lahko implementirate na različne načine. Ta vidik poveča vašo prilagodljivost kot razvijalca.
REST omogoča dostop do zahtevanih podatkov, shranjenih v bazi podatkov. Osnovne funkcije CRUD lahko izvajate z API-jem REST. Ko odjemalci zahtevajo vsebino prek API-ja RESTful, morajo uporabiti prave glave in parametre. Glave vsebujejo uporabne metapodatke za identifikacijo vira, kot so statusne kode in avtorizacija.
Informacije, prenesene prek HTTP, so lahko v JSON, HTML, XML ali navadnem besedilu. JSON je najpogosteje uporabljena oblika datoteke za API-je REST. JSON je jezikovno neodvisen in ga lahko ljudje berejo.
2. MILO
Preprost protokol za dostop do objektov (SOAP) je uradni protokol API. Konzorcij svetovnega spleta (W3C) vzdržuje protokol SOAP, ki je ena najzgodnejših arhitektur API. Njegova zasnova olajša komunikacijo med aplikacijami, izdelanimi z različnimi jeziki in platformami.
Format SOAP opisuje API z uporabo jezika opisa spletnih storitev (WSDL). Napisan je v obsežnem označevalnem jeziku (XML). Format nalaga vgrajene standarde skladnosti, ki povečujejo varnost, doslednost, izolacijo in vzdržljivost. Te lastnosti zagotavljajo zanesljive transakcije baze podatkov, zaradi česar je SOAP boljši za razvoj podjetij.
Ko uporabnik zahteva vsebino prek API-ja SOAP, gre ta skozi standardne protokole plasti. Odgovor je v formatu XML, ki ga lahko preberejo ljudje in stroji. Tako kot API-ji REST tudi API-ji SOAP ne predpomnijo/shranjujejo informacij. Če boste podatke potrebovali pozneje, morate vložiti novo zahtevo.
SOAP podpira tako izmenjavo podatkov s stanjem kot brez stanja.
3. GraphQL
GraphQL je poizvedovalni jezik za API. To je strežniško izvajalno okolje, ki izvaja poizvedbe na podlagi določenega nabora podatkov. GraphQL ima posebne primere uporabe. Njegova arhitektura vam omogoča, da navedete specifične informacije, ki jih potrebujete.
Za razliko od arhitekture REST, kjer HTTP obravnava zahteve in odgovore odjemalcev, GraphQL zahteva podatke s poizvedbami. Storitev GraphQL definira vrste in polja teh vrst, nato pa zagotovi funkcije za vsako polje in vrsto.
Storitev prejme Poizvedbe GraphQL potrditi in izvesti. Najprej preveri poizvedbo, da zagotovi, da se nanaša na definirane tipe in polja. Nato zažene povezane funkcije, da ustvari želeni rezultat.
GraphQL je odličen za določene primere uporabe, kot je pridobivanje podatkov iz več virov. Prav tako lahko nadzirate pridobivanje podatkov in regulirate pasovno širino za manjše naprave.
4. Apaš Kafka
Apaš Kafka je distribuirana platforma, ki podpira pretakanje dogodkov. Pretakanje dogodkov je proces zajemanja podatkov v realnem času iz virov. Viri so lahko baze podatkov, strežniki ali programske aplikacije. Sistem Kafka je sestavljen iz strežnikov in odjemalcev. Komunikacija poteka prek omrežnega protokola TCP.
Sistem lahko namestite na strojno opremo, virtualne stroje in vsebnike. To lahko storite na mestu uporabe in v oblačnih okoljih. Sistem Apache Kafka zajema podatke, jih obdeluje in se nanje odziva v realnem času. Prav tako lahko v realnem času preusmeri podatke na želeno destinacijo. Kafka zajame in shrani podatke v sistem, ki jih lahko pozneje pridobite za uporabo.
Kafka podpira neprekinjen pretok in integracijo podatkov. To zagotavlja, da so informacije na pravem mestu in ob pravem času. Pretakanje dogodkov se lahko uporablja za številne primere uporabe, ki potrebujejo tokove podatkov v živo. Sem spadajo finančne institucije, zdravstvo, vlada, transportna industrija in podjetja za računalniško programsko opremo.
5. AsyncAPI
AsyncAPI je odprtokodna pobuda, ki pomaga graditi in vzdrževati arhitekture, ki temeljijo na dogodkih. Njegove specifikacije imajo veliko skupnega s specifikacijami OpenAPI. AsyncAPI je v bistvu prilagoditev in izboljšava specifikacij OpenAPI z nekaj razlikami.
Arhitektura AsyncAPI združuje mešanico API-jev REST in API-jev, ki jih poganjajo dogodki. Njegove sheme za obravnavanje zahtev in odgovorov so podobno kot pri API-jih dogodkov. AsyncAPI ponuja specifikacije za opis in dokumentiranje asinhronih aplikacij v strojno berljivi obliki format. Ponuja tudi orodja, kot so generatorji kode, ki uporabnikom olajšajo njihovo implementacijo.
AsyncAPI izboljšuje trenutno stanje Event-Driven architecture (EDA). Cilj je olajšati delo z EDA-ji, kot je to z API-ji REST. Pobuda AsyncAPI zagotavlja dokumentacijo in kodo, ki podpirata upravljanje dogodkov. Večina procesov, uporabljenih v API-jih REST, velja za API-je, ki jih poganjajo dogodki/asinhrone API-je.
Uporaba specifikacije AsyncAPI za dokumentiranje sistemov, ki jih poganjajo dogodki, je ključnega pomena. Upravlja in vzdržuje doslednost in učinkovitost med ekipami, ki delajo na projektih, ki temeljijo na dogodkih.
6. Oddaljeni klic postopka (RPC)
RPC je programski komunikacijski protokol, ki omogoča komunikacijo med različnimi programi v omrežju. Na primer, program lahko zahteva informacije od drugega računalnika v omrežju. Ni nujno, da se drži omrežnih protokolov. RPC lahko uporabite za klicanje procesov v oddaljenih sistemih tako kot v lokalnem sistemu.
RPC deluje po modelu odjemalec-strežnik. Odjemalski program zahteva, strežniški program pa odgovori s storitvijo. RPC-ji delujejo sinhrono. Ko program pošlje zahtevo, ostane začasno ustavljen, dokler ne prejme odgovora s strežnika.
RPC-ji so najboljši za porazdeljene sisteme. Najboljši so za sisteme, ki temeljijo na ukazih, in imajo lahke nosilnosti, ki povečajo zmogljivost.
Kako izbrati pravo arhitekturo API-ja
Prava arhitektura API je odvisna od vašega primera uporabe. Arhitektura določa metodologijo za razvoj API-ja in kako bo deloval. Arhitekturna zasnova API-ja določa njegove komponente in interakcije.
Sprejmite arhitekturne odločitve pred načrtovanjem in razvojem API-ja. Določite tehnične zahteve API-ja, ravni, upravljanja življenjskega cikla in varnosti. Zasnove arhitekture API vsebujejo strukturne plasti. Plasti usmerjajo razvoj in zagotavljajo, da ustvarjeni API služi predvidenemu namenu.