Mi az az API?

post-thumb

Az API (Application Programming Interface - Alkalmazásprogramozási Felület) egy olyan felület, amely kommunikációt és adatcserét tesz lehetővé két különálló rendszer között. Az API-t futtató rendszer számos olyan funkciót/alprogramot tartalmaz, amelyeket egy másik rendszer végrehajthat.

Az API meghatározza, hogy milyen kéréseket küldhetünk a kiszolgálónak és milyen válaszokat adunk a felhasználónak, továbbá meghatározza még a kérések módját, a válasz formátumát is.

Vizsgáljuk meg egy éttermi példán keresztül az API-t:

API collects and processes a response, then returns with that response


Egy pincér felveszi a rendelést a vendégtől, amelyet továbbít a szakácsnak. Miután a séf elkészítette a rendelést, a pincér felszolgálja az ételt a vendégnek.

Hasonlóképpen működik az API is. Egy API kérést kap egy alkalmazástól. Ezután interakcióba lép egy szerverrel/adatforrással, amely feldolgozza a kérést és összeállítja a választ, amelyet aztán visszaküld az alkalmazásnak.

Nézzünk pár további példát az API-ra:

Google Maps-ben útvonalat tervezünk és mikor megadjuk az indulási helyünket és úticélunkat, akkor az útvonaltervező elküld egy kérést a taxi vállalatnak, a két megadott címmel, majd jön a taxi cégtől a válasz, hogy mennyibe kerülne a fuvar és mennyi időt vesz igénybe az út:

Példa levezetése Google Maps-ben az API-ra

Hasonlóan jó példa a booking.com, ahol a megadott feltételeink alapján összeállít az oldal egy kérést (például, hogy hova mennénk nyaralni, mettől-meddig mennénk oda) és elküldi a különböző hoteleknek, szállásadóknak a kérést, amik válaszként visszaadják, hogy milyen szobáik vannak az adott feltételeknek megfelelően.:

Egy újabb API példa bemutatása a booking.com-on

Mi az a REST API?

REpresentational State Transfer - azaz Reprezentációs állapotátvitel (ami nem hangzik túl szépen, ezért, szimplán REST-ként szoktak rá hivatkozni).

Ez egy állapotmentes (stateless) szoftver architektúra megoldás, ahol a meglévő webes standardokat használjuk ki az alkalmazás-alkalmazás kommunikációban a szerveren vagy kliensen tárolt objektumok állapotának átvitelére. Tipikusan a HTTP szabványban található szabályokat követi: HTTP státuszkódok, HTTP metódusok és HTTP fejléc kezelés.

A REST architektúrát megvalósító webszolgáltatásokat RESTful webszolgáltatásoknak nevezik. A RESTful API kifejezés általában a RESTful web API-kra vonatkozik. A REST API és a RESTful API kifejezéseket azonban felváltva használják.

De mi is az a HTTP?

Ha valaha is használtad az internetet, akkor biztosan tudod vagy van sejtésed arról hogyan működik.

A gépünkről, telefonunkról kéréseket küldünk és adatokat fogadunk a távoli szerverekről. Ez az internet dióhéjban.

Hogyan is valósulhat ez meg?

Úgy, hogy az összes netet használó eszköz ugyanazon a nyelven, ugyanazon a protokollon, azaz a HTTP-n ( Hyper Text Transfer Protocol) keresztül kommunikál.

A HTTP az a protokoll, amelyen az internet alapul. Lehetővé teszi a számítógépek számára a világ bármely pontjáról, hogy kéréseket küldjenek távoli szerverekre, és visszakapják a böngészőben megjeleníthető válaszokat.

Milyen előnyei vannak a REST API-nak?

Skálázhatóság

A REST API-kat megvalósító rendszerek hatékonyan méretezhetők, mivel a REST optimalizálja az ügyfél-szerver interakciókat. Az állapotmentesség megszünteti a szerver terhelését, mivel a kiszolgálónak nem kell megőriznie a korábbi ügyfélkérések adatait. A jól kezelt gyorsítótárazás részben vagy teljesen kiküszöböl néhány kliens-szerver interakciót. Mindezek a szolgáltatások támogatják a méretezhetőséget anélkül, hogy a kommunikációs szűk keresztmetszeteket okoznának, amelyek csökkentik a teljesítményt.

Rugalmasság

A RESTful webszolgáltatások támogatják a teljes kliens-szerver szétválasztást. Leegyszerűsítik és szétválasztják a különböző szerverösszetevőket, így mindegyik rész egymástól függetlenül fejlődhet. A kiszolgálóalkalmazás platform- vagy technológiai változásai nem érintik az ügyfélalkalmazást. Az alkalmazási funkciók rétegzésének lehetősége még tovább növeli a rugalmasságot. Például a fejlesztők az alkalmazáslogika átírása nélkül módosíthatnak az adatbázis rétegen.

Függetlenség

A REST API-k függetlenek a használt technológiától. Különféle programozási nyelveken írhatunk kliens- és szerveralkalmazásokat is anélkül, hogy ez befolyásolná az API tervezését. Mindkét oldalon módosíthatjuk a mögöttes technológiát a kommunikáció befolyásolása nélkül.

A REST API alapelvei

Egységes felület

Az egységes felület alapvető fontosságú bármely REST webszolgáltatás tervezésénél. Annyit tesz, hogy a szerver egy szabványos formátumban továbbítja az információkat. A formázott erőforrást REST-beli reprezentációnak nevezik. Ez a formátum eltérhet az erőforrás belső megjelenítésétől a szerveren. Például a szerver tárolhat adatokat szövegként, de formázhatja azt és elküldheti HTML formátumban.

Az egységes felületnek négy architekturális megkötése van:

  1. Erőforrások azonosítása: A kéréseknek meg kell határozniuk az erőforrásokat. Ez egységes erőforrás-azonosító használatával történik.

  2. Erőforrások módosítása a reprezentációkon keresztül: amikor egy kliens megkapja egy erőforrás reprezentációját, beleértve a csatolt metaadatokat is, akkor elegendő információval rendelkezik az erőforrás módosításához vagy törléséhez a kiszolgálón, ha rendelkezik erre engedéllyel.

  3. Önleíró üzenetek: minden üzenet elegendő információt tartalmaz annak feldolgozásához. Ez annyit tesz, hogy a kliens meghatározza a kérésben, hogy az milyen típusú (például: lekérdezés, törlés vagy módosítás) és a szerver válasza is tartalmazza, hogy az milyen típusú választ adott (például: egyszerű szöveg, HTML, kép, stb.).

  4. Hipermédia: a kliensek információt kapnak minden egyéb kapcsolódó erőforrásról, amelyre egy feladat elvégzéséhez szükségük van. A szerver ezt úgy éri el, hogy hiperhivatkozásokat küld a válaszokban, így a kliensek dinamikusan több erőforrást érhetnek el. A kliensnek csak az alkalmazás kezdeti URL-jével kell rendelkeznie. Az alkalmazásnak pedig dinamikusan kell továbbítania az összes többi erőforrást és interakciót a hiperhivatkozások használatával. Vegyünk például egy webshopot, amitől egy kérésben lekérjük az összes terméket. A válaszban pedig megkapjuk a termékeket és azt a linket is, amivel az egyes termékek részleteit kérhetjük le.

Gyorsítótárazhatóság

A RESTful webszolgáltatások támogatják a gyorsítótárazást, amely segíti a szerver válaszidejének gyorsítását. Tegyük fel például, hogy felkeres egy weboldalt, amelynek minden oldalán közös fejléc és lábléc található. Minden alkalommal, amikor meglátogat egy új weboldalt, a szervernek újra el kell küldenie ugyanazokat a fejléceket, képeket, stb. Ennek elkerülése érdekében a kliens az első válasz után gyorsítótárba helyezi vagy eltárolja ezeket a tartalmakat, majd közvetlenül a gyorsítótárból használja azokat ezáltal javítva a válaszok sebességét.

Réteges felépítés

A réteges felépítés lehetővé teszi az alkalmazások stabilabbá tételét az összetevők viselkedésének szabályozásával. Ez a fajta architektúra segít az alkalmazás biztonságának fokozásában, mivel az egyes rétegek összetevői nem tudnak kölcsönhatásba lépni a következő közvetlen rétegen túl. Ezen kívül lehetővé teszi a terheléselosztást, és megosztott gyorsítótárakat biztosít a skálázhatóság elősegítése érdekében.

Igényelt kód

A szerverek ideiglenesen bővíthetik vagy testre szabhatják az ügyfélfunkciókat azáltal, hogy kódot visznek át a kliensre. Például, amikor kitöltünk egy regisztrációs űrlapot bármely webhelyen, a böngésző azonnal validálja és kiemeli az általad elkövetett hibákat, például a helytelen telefonszámokat. Ezt a szerver által küldött kód miatt tudja megtenni.

A kliens és a szerver szétválasztása

REST-ben a kliens és a szerver implementációja egymástól függetlenül is elvégezhető anélkül, hogy tudnának a másikról. Ez azt jelenti, hogy a kliens oldali kód bármikor megváltoztatható anélkül, hogy ez a szerver működését befolyásolná, a szerver oldali kód pedig a kliens működésének befolyásolása nélkül.

Addig, amíg mindkét fél tudja, hogy milyen formátumú üzeneteket küldjön a másiknak, azok modulárisak és elkülöníthetők. A felhasználói felület és az adattárolási szempontok elkülönítésével javítjuk a felület rugalmasságát a platformok között, és javítjuk a méretezhetőséget a szerverkomponensek egyszerűsítésével. Ezenkívül az elválasztás lehetővé teszi, hogy az egyes komponensek egymástól függetlenül fejlődjenek.

A REST felület használatával a különböző ügyfelek ugyanazokat a REST-végpontokat érik el, ugyanazokat a műveleteket hajtják végre, és ugyanazokat a válaszokat kapják.

Állapotmentesség

A REST paradigmát követő rendszerek állapot nélküliek, ami azt jelenti, hogy a szervernek semmit sem kell tudnia arról, hogy a kliens milyen állapotban van, és fordítva. Ily módon a szerver és a kliens is megérti a kapott üzeneteket, még akkor is, ha nem látja a korábbiakat.

A cikk második részében rátérünk arra, hogyan is működik a REST API. Folytatjuk…

- TesterLab -

Megosztás: