Locked History Actions

Application Programing Interface

Žodis angliškai

Application Programming Interface

Santrumpa

API

Žodis Lietuviškai

Aplikacijų programavimo sąsaja


Apibrėžimas

API- sąsaja, kurią suteikia operacinė sistema, biblioteka ar programa naujų taikomųjų programų ar objektų kurimui.


Paaiškinimai

  • Viena iš pagrindinių API savybių, tai atvirai pasiekiamų funkcijų, klasių, metodų pibrėžimas, kuriomis programuotojas gali atlikti tam tikrą veiksmą, pavyzdžiui, nupiešti langą, ekraną, naudojant tam skirtą biblioteką. Programiniai komponentai bendrauja tarpusavyje API pagalba sudarydami tam tikrą hierarchinį ryšį- aukštojo lygmens komponentai audoja žemesiniojo lygmens komponentų API, o pastarieji naudoja dar žemesnio lygmens komponentu API. Beveik visos operacinės sistemos turi savo API, todėl programuotojas gali parašyti jai programinę įrangą. Kompiuterinė programa gali, o dažniausiai ir turi naudoti jos API tam, kad galėtų valdyti atmintį, failinę sistemą, kitas operacinės sistemos dalis. Dauguma programų ir sistemų tipų, kaip grafinės sistemos, web servisai ir netgi kai kurie žaidimai, realizuoja savo aplikacijų programavimo sąsają. Vieningos API naudojimas dažnai reiškia panašią vartotojo sąsają, taigi naudotojui lengviau prisitaikyti prie naujų programų. Egzistuoja ir kita medalio pusė. Skirtingos operacinių sistemų API apsunkina programų pernešamumą tarp skirtingų OS. Šiai problemai išspręsti naudojami įvairūs metodai: nuo „tarpinių“ API sukūrimo(pvz.: GTK, QT), programavimo kalbų API standartizavimo (standartinė C biblioteka, Java), iki įvairių interpretatorių (PHP, python).
  • Paprastai programuotojas susiduria bent su keliomis skirtingomis API, atliekančiomis tą pačią funkciją. Jas galima atvaizduoti kaip medį, kur žemiausias lygis yra pats sudėtingiausias, bet funkcionaliausias ir atvirkščiai, aukščiausias yra parašytas žemesnio pagrindu, supaprastintas ir lengviau išmokstamas, tačiau jis praranda ir dalį funkcionalumo, kurį galėtum pasiekti žemesniu lygiu.
  • Egzistuoja įvairūs API dizaino modeliai. Sąsajos, kurios skirtos greitam vykdymui, paprastai sudarytos iš funkcijų, procedūrų, kintamųjų ir duomenų struktūrų. Egzistuoja ir kiti modeliai, pavyzdžiui, interpretatorius, kuris įvertina reiškinių reikšmes JavaScript kalboje ar abstrakcijos lygyje, kas palengvina programuotojo darbą, leidžia jam nesigilinti į žemesnio lygio abstrakcijas. Taip pačios API tobulinimas tampa paprastesnis, nesulaužant suderinamumo su kodu, kuris buvo parašytas remiantis šia API.

Kas yra API?

Programų kūrimo sąsaja (angl. Application Programming Interface, API) – tai sąsaja, kurią suteikia kompiuterinė sistema, biblioteka ar programa tam, kad programuotojas per kitą programą galėtų pasiekti jos funkcionalumą ar apsikeistų su ja duomenimis. Ši technologija nėra tokia jau ir nauja. Paimkim kaip pavyzdį stacionarų kompiuterį su Windows operacine sistema. Juk API dėka yra įmanoma programoms keistis informacija tarpusavyje. Pavyzdžiui kuomet kokia nors teksto ar lentelės dalis iš „Word“ programos yra nukopijuojama į „Excel programą“. Sistemos lygio API leidžia programos kaip „Word“ ir „Excel“ veikti virš operacinės sistemos. Juk iš pradžių užkraunama yra operacinė sistema, o paskui jau jungiamos visos kitos programos. Tačiau kalbant apie web-aplikacijas, programinės įrangos kompanija išleidžia savo API tam, kad programinės įrangos kūrėjai galėtų projektuoti savo programas ar aplikacijas remiantis jų paslauga.

Pavyzdžiui Amazon.com išleido savo API tam, kad interneto tinklapių ar mobiliųjų aplikacijų kūrėjai galėtų lengviau pasiekti informaciją apie Amazon.com tinklapyje esančius produktus. Naudodama Amazon API trečios partijos (third party) tinklapis ar aplikacija gali skelbti tiesiogines nuorodas su Amazon produktų atnaujintom kainom ir galimybę pirkti produktą.

Aplikacijų programavimo sąsaja (API) yra programinės įrangos su programinės įrangos sąsaja (software-to-software), o ne vartotojo sąsaja. Su API programos ar aplikacijos bendrauja tarpusavyje be jokios vartotojo žinios ar įsikišimo. Kuomet jūs perkate krepšinio rungtynių bilietus internete ir įvedate savo kreditinės kortelės informaciją, bilieto pardavimo tinklapis ar aplikacija naudoja API, kad išsiųstų jūsų kreditinės kortelės informaciją į nuotolinį tinklapį ar aplikaciją, kurie patvirtina ar įvesti duomenys yra teisingi. Kuomet apmokėjimas yra patvirtintas nuotolinė aplikacija ar tinklapis siunčia patvirtinimą atgal į bilieto pardavimo tinklapį ar aplikaciją sakydama, jog bilietus galima išduoti.

Kaip vartotojai mes matome tik tinklapio ar aplikacijos grafinę sąsają, kitaip tariant „interfeic‘ą“. Tačiau mums to nematant aplikacijos dirba tarpusavyje naudodamos API. Tokio tipo integravimas yra vadinimas vientisu, kadangi vartotojas niekada nemato kaip programinės įrangos funkcijos yra perduodamos iš vienos aplikacijos į kitą.

API primena programinę įrangą kaip paslaugą (angl. Software as a Service, SaaS), nes programinės įrangos kūrėjams nereikia kiekvieną kartą pradėti rašyti kodą nuo nulio. Vietoj to, kad parašyti vieną programą, kuri bandytų daryti viską – el. paštą, atsiskaitymas pinigais, sekimas ir t.t., aplikacija gali naudotis nuotolinėmis paslaugomis, kurios užtikrina kokybišką aptarnavimą, iš kurių kiekvieną atliks tik vieną funkciją, tą, kurią išmano geriausiai.

Paimkime dar vieną pavyzdį su tinklo konferencijomis. Tinklo konferencijos yra SaaS, kadangi ji gali būti pasiekta pagal pareikalavimą naudojant tiktai interneto puslapį. Su konferencijų API ta pati užsakomoji paslauga gali būti integruota į kitą tinklų paremtą aplikaciją, kaip tinklo kalendorius. Vartotojas gali nustatyti tinklo konferenciją savo tinklo kalendoriuje ir paskui paspausti ant nuorodos toje pačioje programoje, kad įjungtų konferenciją. Pati kalendoriaus programa nepriima ir nevykdo konferencijos. Ji naudoja konferencijų API, kad bendrautų su nuotoline tinklo konferencijos paslauga ir vientisai pristato tą funkcionalumą vartotojui.

Kaip dirba API?

Programų kūrimo sąsaja (API) leidžia programinės įrangos aplikacijoms komunikuoti su nuotolinėmis aplikacijomis internetu siunčiant užklausas. API iš esmės sąsaja, kuri apibrėžia kokiu būdu tarpusavyje gali bendrauti dvi aplikacijos. 1 paveiksliuke parodyta paprasta API veikimo schema.

1pav.JPG

1 pav. API veikimo schema

Kaip matome, mūsų sukurta aplikacija siunčia užklausa nuotolinei aplikacijai, kuri teikia API paslaugas ir grąžina mums tą informaciją, kuria mes užklausėme.

API užklausos tarp aplikacijų yra apdorojamos tinklo paslaugomis. Užklausos iš esmės yra vykdomos HTTP protokolu ir keliaujantys duomenys gali būti dviejų standartų:

  • XML (angl. Extensible Markup Language) yra bendros paskirties duomenų struktūrų bei jų turinio aprašomoji kalba. Pagrindinė XML kalbos paskirtis yra užtikrinti lengvesnį duomenų keitimąsi tarp skirtingo tipo sistemų, dažniausiai sujungtų internetu. Pagrindinis XML kalbos vienetas yra elementas. Elementas visada turi vardą ir be jo gali turėti: norimą skaičių atributų, o atributas turi savo vardą bei reikšmę; kitus (dukterinius) šio elemento viduje esančius elementus; su elementu susijusį tekstą.

Panagrinėkime trumpą pavyzdį:

<asmenys>

  • <asmuo pasonumeris="MP123456">

    • <vardas>Marius</vardas>

      <pavarde>Pankauskas</pavarde>

    </asmuo>

    <asmuo pasonumeris="PK123456">

    • <vardas>Eglė</vardas>

      <pavarde>Kalėdaitė</pavarde>

    </asmuo>

    <papildoma_informacija x="123"/>

</asmenys>

Šiame pavyzdyje elementas asmuo turi atributą pasonumeris ir du dukterinius elementus (vardas ir pavarde). Abu šie dukteriniai elementai turi su jais susijusį tekstą. Elementas asmenys turi du tą patį vardą turinčius elementus (asmuo). Trečias elementas (papildoma_informacija) neturi nei dukterinių elementų, nei susieto teksto.

Taigi vartotojas tarkim iš šio pavyzdžio žino, kad API į kurį jis kreipsis turi tokį standartą ir struktūrą, kuri turi savyje tokius elementus. Klientas galėtų nusiųsti užklausą, kurioje nurodytų, kad nori gauti tik visų asmenų vardus. Nuotolinė aplikaciją priima užklausą ir išsiunčia atgal vartotojui tik vardus, šiuo atveju tai būtų Marius ir Eglė. O jau gautus duomenys programos kūrėjas gali panaudoti taip kaip jam reikia ir kur reikia.

  • JSON (angl. JavaScript Object Notation) yra atviras standartas, kuris naudoja žmogui skaitomą tekstą persiųsti duomenims, kurie susideda iš požymių-verčių porų. Jis pagrinde yra naudojamas duomenims persiųsti tarp serverio ir web-aplikacijos kaip alternatyva XML. Nors iš pradžių kilęs iš JavaScript programavimo kalbos, JSON yra kalbos-nepriklausomas duomenų formatas. JSON duomenų formatą palaiko daugelis programavimo kalbų. Kadangi praktikos metu teko praktiškai panaudoti programų kūrimo sąsają, tai plačiau aprašysiu būtent tą programėlę, kurią sukūriau pats panaudojant Google Books API.

Visų pirma ką reikia padaryti tai be abejo susikurti Google paskyrą, jeigu tokios dar neturite. Tuomet norint siųsti užklausas į Google Books API serverį vartotojo duomenys turi būti autorizuoti. Autorizavimui yra naudojama OAuth 2.0 autorizacija. Autorizavimo procesas yra toks:

  1. Kuomet (mano atveju) mobilioji programėlė yra sukurta, ją reikia užregistruoti Google serveryje. Tada „Google‘as“ suteikia informaciją kurios prireiks vėliau, tokią kaip kliento ID ir taip vadinama kliento paslaptis (paslapties kodas).
  2. Paskui reikia nueiti į Google API konsolę, kurioje yra galybė Google teikiamų API bei įgalinti Books API, nes būtent ją aš ir naudosiu.
  3. Kada mano aplikacijai reikės prieigos prie duomenų, programėlė prašo tam tikrą prieigos taikymo sritį.
  4. „Google‘as“ atvaizduoja OAuth langą vartotojui, prašydamas jį autorizuoti aplikaciją, kad galima būtų užklausti tam tikrą kiekį jo duomenų.
  5. Jei vartotojas sutinka, tada „Google‘as“ skiria programėlei trumpalaikį prieigos raktą.
  6. Mano programėlė užklausia duomenų, pritvirtindama prieigos raktą prie užklausos.
  7. Jeigu „Google‘as“ nustato, jog mano užklausa ir prieigos raktas yra galiojantys, jis grąžina man užklaustus duomenys.

Paskutinis žingsnis, kurį liko padaryti tai įgyti API raktą. Ji mes rasime mūsų paskyroje Google konsolėje. Gautą API raktą jau reikės panaudoti pačiame programos kode, kuris atrodo taip: key=manoAPIRaktas.

Taigi susitvarkę visus reikiamus dalykus su autorizacija ir API rakto gavimu galima pereiti prie pačios mano kuriamos programėlės, kuri ir naudos Google Books API. Mobiliosios programėlės paskirtis yra tokia, vartotojas atidaręs aplikaciją su QR/Barkodo skeneriu nuskenuoja knygos ISBN kodą ir programėlė atvaizduoja tam tikrus duomenys apie knygą, o būtent: knygos pavadinimą, autorių(-ius), knygos išleidimo datą, viršelio paveiksliuką , knygos aprašymą bei knygos įvertinimą.

Visų pirma kaip parodytą 2 paveiksliuke programoje yra SCAN mygtukas, kurį paspaudus įsijungia QR/Barkodo skeneris, kurio pagalba yra nuskenuojamas knygos ISBN kodas.

2pav.JPG

2 pav.

Kada knyga yra sėkmingai nuskenuota, taip kaip tai yra parodyta 3 paveiksliuke prasideda API veikimas.

3pav.JPG

3 pav.

Mano programėlė siunčia HTTP užklausą į Google Books API, norėdama surasti būtent šitą ISBN kodą ir norėdama gauti tik tuos duomenys, kuriuos aš aprašiau programiškai ir kuriuos išvardinau jau anksčiau (knygos pavadinimas ir t.t.). Be abejo prieš pradėdamas kurti programėlę, persiskaičiau kokiu standartu ir duomenų formatu duomenis grąžina Google Books API. Duomenų formatas yra JSON ir jis atrodo taip kaip parodyta 4 paveiksliuke. Reikia paminėti, kad 4 pav. duomenys yra tik pavyzdys ir jie neatitinka būtent mano nuskenuotos knygos duomenis.

4pav.JPG

4 pav. JSON duomenų formato grąžinti tekstiniai duomenys

Pirmiausiai matome, kad HTTP užklausos atsakymas yra 200 OK, kas reiškia, kad sujungimas buvo sėkmingas ir duomenis gali būti perduoti. Taigi Google Books API man grąžino duomenys, kuriuos aš prašiau: knygos pavadinimą, autorių(-ius), knygos išleidimo datą, viršelio paveiksliuką , knygos aprašymą bei knygos įvertinimą. Man grąžintus duomenis aš galiu pritaikyti taip kaip man reikia, kurioje programėlės vietoje aš noriu, kokiu stiliumi ar spalva bus išvesti šie duomenys. 5 paveiksliuke matome kaip atvaizduojami duomenys gauti iš Google Books API.

5pav.JPG

5 pav. Programėlės langas su gautais duomenimis

Verta paminėti dar svarbius technologinius standartus, protokolus bei programavimo kalbas, kurios leidžia tinklo paslaugoms veikti:

  • SOAP (angl. Simple Object Access Protocol): SOAP yra atsakingas už XML ir JSON duomenų dekodavimui, kad bet kuri operacinė sistema ir bet kuris tinklo protokolas galėtų priimti šiuos duomenis.
  • UDDI (angl. Universal Description, Discovery and Integration): Kitaip dar vadinamas interneto geltonaisiais puslapiais. UDDI yra XML-pagrindu paremtas katalogas, kuris leidžia turėti įvairių verslo kompanijų sąrašus, ieškoti vieniems kitus ir bendradarbiauti naudojantis API.
  • WSDL (angl. Web Services Description Language): WDSL yra UDDI‘o SOAP‘as. Tai XML pagrindu paremta kalba, kuria naudoją verslo įmonės, kad galėtų save aprašyti UDDI kataloge.

Taigi apibendrinant API veikimą galima teigti, jog tai labai patogus ir naudingas įrankis programų kūrėjams, kadangi galima naudotis didelių korporacijų suteikiamomis paslaugomis savo programoje. Verta pabrėžti, kad galima naudoti tiek API savo programėlėje kiek norima, fantazijoms ribų nėra. Iš esmės galima sukurti savo programėlę išskirtinai naudojant tik kitų aplikacijų teikiamomis API paslaugomis.

Programų kūrimo sąsajos privalumai ir trūkumai

Privalumai

Trūkumai

1. Programų kūrėjai gali žymiai pagreitinti aplikacijų kūrimo procesą integruodami nuotolinius įrankius ir sistemas.

1. Visiška priklausomybė nuo išorinių paslaugų bei serverių. API leidžia programų kūrėjams naudotis nuotolinėmis paslaugomis, tačiau jei tos paslaugos užstrigs, sustabdys savo veiklą ar bus atjungtos, tuomet be abejo visos funkcijos nuosavoje aplikacijoje taipogi veiks blogai arba nebeveiks išvis. Naudojant išorines paslaugas visada yra rizika. Kas galėtų atsitikti jei Facebook‘as, Google‘as ir kiti paslaugų tiekėjai nuspręs įvesti mokestį už jų programinės įrangos naudojimą ar iškels kitas sąlygas? Ar įmanoma bus už tai susimokėti? Ar bus kokių nors kitų alternatyvų rinkoje?

2. Kompanijos ar individualūs kūrėjai sutaupo labai daug laiko ir pinigų, nes nerekia mokėti už aparatinės ir programinės įrangos suderinimą skirtingiems tiekėjams. Be to, norint pavyzdžiui sukurti kokią nors filmų aplikaciją su didele duomenų baze, kurioje bus informacija apie filmus, nereikės kurti duomenų bazės, o tiesiog pasinaudoti Amazon teikiamu API ir gauti visus reikiamus duomenis iš ten.

3. Milžiniškas potencialas naujų programų kūrimui bei plėtojimui. Galima sujungti daugelį API bei sukurti kokią nors unikalią programą, kuri susideda realiai iš skirtingų aplikacijų teikiamomis paslaugomis, tačiau sujungus viską į vieną galima gauti labai perspektyvią ir gerą aplikaciją.

4. Kompanijoms kaip eBay, Amazon ir kitom apsimoka teikti savo API kūrėjams, nes tokiu būdu jų prekinis ženklas yra stipriai reklamuojamas bei jos gali gauti didžiulį pelną iš to, nes jų paslaugos veiks daugelyje programėlių. 2012m. duomenimis eBay 60% viso savo pelno gavo būtent teikiant API ir vartotojams naudojant jas kitose programose, o ne tiesiogiai eBay tinklapyje.

Naudota literatūra

http://ru.wikipedia.org/wiki/API

http://en.wikipedia.org/wiki/API