Az API ( IPA : [ ˌ e ɪ . p i ˈ a ɪ ]; angol rövidítés. Application Programming Interface [ 1 ] ) egy számítógépes program másokkal való interakciójának leírása. Általában valamilyen internetes protokoll (például SCIM [2] ), szoftver keretrendszer ( keretrendszer [3] ) vagy operációs rendszer funkcióhívási szabvány [4] leírásában szerepel . Gyakran külön szoftverkönyvtárral valósítják meg vagy operációs rendszer szolgáltatás . A programozók használják mindenféle alkalmazás írásakor .
Egyszerűen fogalmazva, ez olyan összetevők halmaza, amelyekkel egy számítógépes program (bot vagy webhely) egy másik programot használhat.
Az API (Application Programming Interface) leegyszerűsíti a programozási folyamatot az alkalmazások építése során azáltal, hogy elvonatkoztatja a mögöttes megvalósítást, és csak azokat az objektumokat vagy műveleteket biztosítja, amelyekre a fejlesztőnek szüksége van. Ha egy e-mail kliens grafikus felhasználói felülete biztosít a felhasználó számára egy gombot, amely végigmegy az új e-mailek lekéréséhez és kiemeléséhez szükséges összes lépésen, akkor a File I/O API olyan funkciót tud adni a fejlesztőnek, amely átmásolja a fájlt egyik helyről a másikra. anélkül, hogy a fejlesztőtől megkövetelné a fájlműveletek megértését.a színfalak mögött zajló rendszerek. [5]
Ha egy programot (modult, könyvtárat) fekete doboznak tekintünk , akkor az API olyan „fogantyúk” halmaza, amelyek a doboz felhasználója számára elérhetőek, és amelyeket ő forgathat és húzhat.
A szoftverkomponensek API-kon keresztül kölcsönhatásba lépnek egymással. Ebben az esetben a komponensek általában hierarchiát alkotnak - a magas szintű komponensek az alacsony szintű komponensek API-ját használják, ezek pedig a még alacsonyabb szintű komponensek API-ját.
Ennek az elvnek megfelelően épülnek fel az interneten keresztüli adatátviteli protokollok . A szabványos protokollverem ( OSI hálózati modell ) 7 réteget tartalmaz (a fizikai bitátviteli rétegtől az alkalmazásprotokoll rétegig, mint például a HTTP és az IMAP ). Mindegyik réteg az előző („alsó”) adatátviteli réteg funkcióit használja, és a kívánt funkcionalitást biztosítja a következő („felső”) rétegnek.
A protokoll fogalma jelentésében közel áll az API fogalmához. Mindkettő a funkcionalitás absztrakciója, csak az első esetben az adatátvitelről, a másodikban pedig az alkalmazások interakciójáról beszélünk.
A függvény- és osztálykönyvtár API tartalmazza a függvények aláírásainak és szemantikájának leírását .
A függvényaláírás egy általános függvénydeklaráció része, amely lehetővé teszi a fordítók számára, hogy azonosítsák a függvényt többek között. A különböző programozási nyelveknek eltérő elképzeléseik vannak egy függvény aláírásáról, ami szintén szorosan összefügg a funkciótúlterhelés lehetőségeivel ezekben a nyelvekben.
Néha különbséget tesznek a hívásaláírás és a függvénymegvalósítási aláírás között . A hívásaláírást általában a függvényhívás szintaktikai felépítése szerint állítják össze, figyelembe véve a függvény hatókörének aláírását, a függvény nevét, a hívásban szereplő argumentumtípusok aktuális típusát, valamint a függvény típusát. eredmény. Az implementációs aláírás általában tartalmaz néhány elemet a függvénydeklaráció szintaktikai felépítéséből: a függvény hatókörének specifikálóját, a nevét és a formális argumentumtípusok sorozatát.
Például a C++ programozási nyelvben egy egyszerű függvényt a fordító egyedileg azonosít a neve és argumentumtípusainak sorrendje alapján, amely az adott nyelven a függvény aláírását alkotja. Ha a függvény valamelyik osztály metódusa, akkor az osztály neve is részt vesz az aláírásban.
A Java programozási nyelvben a metódus aláírása a neve és a paramétertípusok sorrendje; a visszaadott érték típusa nem szerepel az aláírásban. [6]
Egy függvény szemantikája annak leírása, hogy egy adott függvény mit csinál. A függvény szemantikája magában foglalja annak leírását, hogy mi a függvény kiértékelésének eredménye, hogyan és mitől függ ez az eredmény. Általában a végrehajtás eredménye csak a függvényargumentumok értékétől függ, de egyes modulokban van egy állapotfogalom. Ekkor ettől az állapottól függhet a függvény eredménye, ráadásul az eredmény állapotváltozás is lehet. A függőségek és változások mögött meghúzódó logika a függvény szemantikájához kapcsolódik. A függvények szemantikájának teljes leírása a függvény végrehajtható kódja vagy a függvény matematikai meghatározása.
Szinte minden operációs rendszer ( UNIX , Windows , OS X , Linux stb.) rendelkezik API-val, amellyel a programozók alkalmazásokat hozhatnak létre az adott operációs rendszerhez. Az operációs rendszerek fő API-ja rendszerhívások halmaza .
A szoftveriparban fontos szerepet játszanak a szabványos funkcionalitást szolgáló közös szabványos API-k, amelyek biztosítják, hogy minden közös API-t használó program egyformán jól, vagy legalábbis a megszokott módon működjön. A GUI API-k esetében ez azt jelenti, hogy a programok hasonló felhasználói felülettel rendelkeznek, ami megkönnyíti az új szoftvertermékek megismerését.
Másrészt a különböző operációs rendszerek API-inak különbségei nagyon megnehezítik az alkalmazások platformok közötti portolását. Különféle módszerekkel lehet megkerülni ezt a bonyolultságot – "köztes" API-k írása (API-k grafikus felületekhez wxWidgets , GTK stb.), olyan könyvtárak írása, amelyek az egyik operációs rendszer rendszerhívásait egy másik operációs rendszer rendszerhívásaira képezik le (futási környezetek, például Wine , cygwin stb.), kódolási szabványok bevezetése programozási nyelvekben (például a C szabványkönyvtár ), értelmezett nyelvek írása, amelyek különböző platformokon implementálhatók ( sh , Python , Perl , PHP , Tcl , Javascript , Ruby stb.).
Ezenkívül egy programozónak gyakran több különböző API-ja van ugyanazon eredmény eléréséhez. Ebben az esetben az egyes API-kat általában alacsonyabb absztrakciós szintű szoftverösszetevők API-jaival valósítják meg.
Például: annak érdekében, hogy a böngészőben a " Hello, world!" ”, csak egy HTML dokumentumot kell létrehozni minimális címmel és egyszerű törzstel, amely tartalmazza az adott karakterláncot. Amikor a böngésző megnyitja ezt a dokumentumot , a böngészőprogram átadja a fájlnevet (vagy egy már megnyitott fájlleírót ) a HTML-dokumentumokat feldolgozó könyvtárnak, amely viszont az operációs rendszer API használatával elolvassa ezt a fájlt és megérti az eszközét. , majd szekvenciálisan hívja meg a szabványos grafikus primitívek könyvtárának API-ját olyan műveletekhez, mint az "ablak törlése", "írja a "Hello, world!" a kiválasztott betűtípusba. Ezen műveletek végrehajtása során a grafikus primitív könyvtár a megfelelő kérésekkel az ablak interfész könyvtárához fordul, ez a könyvtár már az operációs rendszer API-jához fordul, hogy adatokat írjon a videokártya pufferébe .
Ugyanakkor szinte minden szinten több lehetséges alternatív API létezik. Például: a forrásdokumentumot nem HTML-ben írhatnánk, hanem LaTeX -ben, megjelenítésre bármilyen böngészőt használhatunk. Ráadásul a különböző böngészők más-más HTML-könyvtárat használnak, ráadásul mindez különböző primitív könyvtárak segítségével és különböző operációs rendszereken is felépíthető.
A meglévő réteges API-rendszerek fő összetettségei a következők:
|
Webfejlesztésben használatos - általában tartalmaz egy bizonyos HTTP -kérelmeket, valamint a HTTP-válaszok szerkezetének meghatározását, amelyek kifejezésére XML- vagy JSON -formátumot használnak .
A Web API szinte egyet jelent a webszolgáltatással, bár a legutóbbi Web 2.0 trend a SOAP -ról a REST kommunikációra vált. Azok a webes felületek, amelyek több szolgáltatás kombinációját biztosítják az új alkalmazásokban, mashupoknak nevezik.
Példák: MediaWiki API
Az operációs rendszerek szempontjai | |||||
---|---|---|---|---|---|
| |||||
Típusok |
| ||||
Sejtmag |
| ||||
Folyamatmenedzsment _ |
| ||||
Memóriakezelés és címzés | |||||
Betöltési és inicializálási eszközök | |||||
Héj | |||||
Egyéb | |||||
Kategória Wikimedia Commons Wikikönyvek Wikiszótár |