Programiranje

Kaj je API? Razloženi vmesniki za programiranje aplikacij

API pomeni vmesnik za programiranje aplikacij, koncept, ki se uporablja povsod, od orodij ukazne vrstice do kode Java Java do spletnih aplikacij Ruby on Rails. API je način programske interakcije z ločeno programsko komponento ali virom.

Če posamezne vrstice kode ne napišete iz nič, boste komunicirali z zunanjimi komponentami programske opreme, vsaka s svojim API-jem. Tudi če napišete nekaj povsem iz nič, bo dobro zasnovana programska aplikacija imela notranje API-je, ki bodo pomagali organizirati kodo in narediti komponente za večkratno uporabo. Obstajajo številni javni API-ji, ki vam omogočajo, da izkoristite funkcionalnosti, razvite drugje po spletu.

Kaj je API?

API je opredeljen kot specifikacija možnih interakcij s programsko komponento. Kaj to točno pomeni? No, predstavljajte si, da je bil avto programska komponenta. Njegov API bi vključeval informacije o kaj lahko - pospeši, zavira, vklopi radio itd. Vključeval bi tudi informacije o kako lahko bi to storila. Na primer, da pospešite, položite nogo na stopalko za plin in pritisnete.

API-ju ni treba pojasniti, kaj se zgodi v motorju, ko postavite nogo na plin. Zato, če ste se naučili voziti avtomobil z motorjem z notranjim zgorevanjem, lahko sedite za volan električnega avtomobila, ne da bi se morali naučiti povsem novega sklopa veščin. The kaj in kako informacije združene v API-ju opredelitev, ki je abstrakten in ločen od samega avtomobila.

Ne pozabite, da se ime nekaterih API-jev pogosto uporablja tako za specifikacijo interakcij kot za dejansko programsko komponento, s katero komunicirate. Besedna zveza »Twitter API« se na primer ne nanaša samo na nabor pravil za programsko interakcijo s Twitterjem, ampak je splošno razumljena kot stvar, s katero komunicirate, kot v »Analiziramo tvite, ki smo jih prejeli od Twitter API. "

API kot abstrakcijski sloj

Pri programski opremi so API-ji dobesedno povsod. API-ji so povezani z enim najbolj temeljnih konceptov v računalništvu: abstrakcija. Abstrakcija je le način organiziranja kompleksnosti sistema, tako da je zapletene ukrepe mogoče obravnavati na preprost način. Pomislite na to abstrakcijo, kot na tiste Amazon Dash Buttons, baterijska vezja s tipkami, s katerimi lahko naročite sponke pri Amazonu. Takole izgledajo:

Pri Amazonu naročite gumb Dash in z aplikacijo na pametnem telefonu povežete omrežje Wi-Fi, račun Amazon in izdelek, recimo, svojo najljubšo znamko papirnatih brisač. Nato, kadar želite naročiti več papirnatih brisač, preprosto pritisnete gumb. Dash Gumb se poveže z internetom in pošlje sporočilo za oddajo naročila na vaš račun. Nekaj ​​dni kasneje na vaš prag prispejo papirnate brisače.

Tako kot API je tudi Dash Button blaženo preprost vmesnik, ki v zakulisju skriva vse vrste zapletenosti. ID izdelka, ki ste ga naročili, je treba pridobiti iz neke baze podatkov. Naslov za dostavo morate vzeti iz računa. Določiti je treba najbližji center za izpolnitev, v katerem bodo shranjene vaše papirnate brisače, nato pa morate obvestiti, da izdelek odstranite iz zaloge in ga zapakirate. Končno je treba paket prepeljati skozi neko kombinacijo letal, tovornjakov in dostavnih vozil skupaj z drugimi tovorki na način, ki zagotavlja, da bodo vsi paketi učinkovito prispeli do svojih ciljev.

Zdaj pa si predstavljajte, da ste morali vse te stvari uskladiti kot stranka. Nikoli ne bi naročili papirnatih brisač, ker je preveč zapleteno in dolgotrajno in imate boljše stvari za početi. Na srečo je celotna preizkušnja abstraktna stran od vas. Obstaja dolga, medsebojno povezana veriga računalniških sistemov in človeških procesov, zaradi katerih se te papirnate brisače prikažejo na vašem pragu, vendar morate le pomisliti na to, da pritisnete gumb.

To so API-ji za programerje. Zavzamejo izjemno zapletenost in opredelijo sorazmerno preprost nabor interakcij, ki jih lahko uporabite, namesto da bi vse naredili sami. V katerem koli programskem projektu verjetno uporabljate na desetine, če ne na stotine API-jev, vsak od teh API-jev pa se opira na druge API-je itd.

Javni API-ji in integracija API-jev

API-ji so dolgoletni koncept računalniškega programiranja in so že leta del nabora orodij za razvijalce. Tradicionalno so API-je uporabljali za povezovanje komponent kode, ki se izvajajo na istem računalniku. Z vzponom vseprisotnega mreženja vse več javni API-ji, včasih poklican odprti API-ji, so na voljo. Javni API-ji so obrnjeni navzven in dostopni prek interneta, kar vam omogoča, da v spletu napišete kodo, ki komunicira s kodo drugih prodajalcev; ta postopek je znan kot API integracija.

Tovrstne kombinacije kod omogočajo uporabnikom, da v svojih sistemih kombinirajo in ujemajo funkcije različnih ponudnikov. Če na primer uporabljate programsko opremo za avtomatizacijo trženja Marketo, lahko svoje podatke tam sinhronizirate s funkcijo Salesforce CRM.

„Odprto“ ali „javno“ se v tem kontekstu ne bi smelo razlagati kot „brezplačno“. Še vedno morate biti stranka Marketo in Salesforce, da bo to delovalo. Toda dostopnost teh API-jev naredi integracijo veliko preprostejši postopek, kot bi bil sicer. ( ima odličen seznam javnih API-jev, o katerih bi morali vedeti.)

Spletne storitve in API-ji

Morda se spomnite izraza web storitve od zgodnjih dvajsetih in menijo, da ideja odprtega API-ja zveni precej podobno. Dejansko je spletna storitev posebna vrsta odprtega API-ja, ki ustreza precej natančnemu naboru specifikacij, vključno s tem, da so določene v jeziku opisa spletnih storitev (WSDL), različici XML.

Spletne storitve naj bi bile uporabljene kot del storitveno usmerjene arhitekture (SOA). Kot pojasnjuje blog o nordijskih API-jih, je to spletnim storitvam prineslo slabo ime, saj SOA-ji nikoli niso povsem izkoristili svojega potenciala. Napredek v tehnikah, ki se uporabljajo za komunikacijo med storitvami - predvsem lažji in prožnejši REST - so tudi spletne storitve nekoliko zaostale v svetu javnih API-jev.

API-ji REST

Spletne storitve so bile prvotno zasnovane za komunikacijo z uporabo protokola SOAP (Simple Object Access Protocol), protokola za sporočanje, ki pošilja dokumente XML prek HTTP. Danes pa večina spletnih API-jev uporablja REST - Reprezentativni državni prenos - kot arhitekturni slog.

REST je formalno predstavil Roy Fielding v svoji doktorski disertaciji leta 2000. Gre za sklop arhitekturnih komponent, principov oblikovanja in interakcij, ki se uporabljajo za gradnjo porazdeljenih sistemov, ki vključujejo kakršne koli medije (besedilo, video itd.). V svojem jedru je REST slog gradnje sistemov, ki omogoča prilagodljivo komunikacijo in prikaz informacij po spletu, hkrati pa zagotavlja strukturo, potrebno za enostavno gradnjo komponent splošnega namena.

V API-ju REST je a vir lahko skoraj vse, vendar primeri vključujejo uporabnika, seznam tvitov in trenutne rezultate iskanja tweetov. Vsak od teh virov je naslovljiv na identifikator vira, ki je v primeru spletnih API-jev REST običajno URL, na primer //api.twitter.com/1.1/users/show?screen_name=twitterdev. Ko aplikacija zahteva vir z identifikatorjem, API poda trenutno zastopanje tega vira za aplikacijo v obliki, ki jo aplikacija lahko porabi, na primer slika JPEG, stran HTML ali JSON.

Eden največjih razlik v REST je, da vključuje pošiljanje podatkov v aplikacijo, ki zahteva. Čeprav to zagotavlja veliko prilagodljivost, ki aplikaciji omogoča, da s podatki naredi karkoli hoče, gre za ceno učinkovitosti. Pošiljanje podatkov prek spleta za obdelavo je precej počasno v primerjavi z obdelavo, kjer se podatki nahajajo, in nato pošiljanjem rezultatov.

Seveda je težava »učinkovitega« pristopa v tem, da bi morali sistemi, ki gostijo podatke, pred časom vedeti, kaj želijo aplikacije narediti z njimi. Torej, za izdelavo API-ja, ki ima splošno uporabnost in prilagodljivost, je REST prava pot.

Primeri API

Obstaja veliko javnih API-jev, s katerimi lahko komunicirate, mnogi iz industrijskih behemotov. Sposobnost programskega dostopa do kode nekega podjetja platforme prek API-ja je tisto, kar jih v bistvu naredi platformo. Nekaj ​​pomembnih primerov API vključuje:

  • Googlovi API-ji, ki vam omogočajo, da svojo kodo povežete s celo vrsto Googlovih storitev, od Zemljevidov do Prevajalnika. API-ji so za Google tako pomembni, da so pridobili Apigee, vodilno platformo za upravljanje API-jev.
  • Facebook API-ji, ki vam omogočajo programski dostop do Facebookovega družbenega grafa in tržnih orodij. (Podjetje je omejilo le, do katerih uporabniških podatkov lahko dostopate prek teh API-jev, v posledicah Cambridge Analytica in drugih škandalih.)

Če želite zares razumeti, kako delujejo API-ji, se poglobimo v dve: Java API, ki jo razvijalci Java uporabljajo za interakcijo s platformo Java, in Twitter API, javni API, ki bi ga uporabili za interakcijo z družabnimi omrežji. omrežne storitve.

Java API

Java API je knjižnica programskih komponent, ki je na voljo takoj, ko je nameščen Java Development Kit. Te komponente izvajajo običajne naloge in na splošno povečujejo produktivnost, ker programerjem ni treba vsakič začeti iz nič. Ena izmed osnovnih komponent, ki se uporablja v programski opremi, je nekaj, kar se imenuje seznam, ki, kot bi lahko pričakovali, spremlja seznam elementov. Java API definira kaj lahko naredite s seznamom: dodajte elemente, razvrstite seznam, določite, ali je element na seznamu itd. To tudi določa kako za izvajanje teh dejanj. Če želite seznam razvrstiti, morate določiti, kako želite, da je seznam razvrščen: po abecedi, številčno padajoče, najsvetlejša do najbolj nejasna barva itd.

Twitter API

Twitter API je spletni JSON API, ki razvijalcem omogoča programsko interakcijo s podatki Twitterja. Za razliko od Java API-ja, ki je vključen v Java Development Kit, je Twitter API spletni API. Do njega je treba dostopati tako, da prek interneta pošiljate zahteve storitvam, ki jih gosti Twitter.

S spletnim API-jem, kot je Twitter, vaša aplikacija pošlje zahtevo HTTP, tako kot to počne spletni brskalnik. Toda namesto da bi bil odgovor dostavljen kot spletna stran, je za človekovo razumevanje vrnjen v obliki, ki jo lahko aplikacije zlahka razčlenijo. V ta namen obstajajo različni formati, Twitter pa uporablja priljubljen in enostaven za uporabo format JSON. (Če JSON-a ne poznate, boste tukaj morda želeli nekaj minut prebrati.)

Eden od osnovnih elementov v Twitterju je tweet. Twitter API vam pove kaj lahko naredite s tvitom: poiščite tweet, ustvarite tweet, tweet najljubši. Prav tako vam pove kako za izvedbo teh dejanj. Za iskanje tvitov morate določiti svoje iskalne kriterije: izraze ali hashtagove, ki jih želite iskati, geolokacijo, jezik itd.

Oblikovanje API

Zasnova API je postopek, s katerim se oblikujeta "kaj" in "kako" API. Kot pri vsem drugem, kar je mogoče ustvariti, se tudi pri oblikovanju API-jev upoštevajo različne stopnje razmišljanja in skrbnosti, kar ima za posledico različne ravni kakovosti API-ja. Dobro zasnovani API-ji se dosledno obnašajo, upoštevajo njihov kontekst in upoštevajo potrebe svojih uporabnikov.

Dosledno vedenje v API-ju močno vpliva na hitrost, s katero se ga je mogoče naučiti, in verjetnost, da bodo programerji pri njegovi uporabi storili napake. Na splošno se API-ji, ki izvajajo podobna dejanja, obnašajo podobno, ne glede na njihove tehnične razlike. Za primer nedoslednega API-ja si oglejmo dva načina za dodajanje elementa na seznam v Javi:

Čeprav oba načina dodajanja elementov na seznam počneta isto, sta njuni vrsti vrnitve (logična in neveljavna) različni. Razvijalci, ki uporabljajo ta API, morajo zdaj spremljati, katera metoda vrne katero vrsto, zaradi česar se API težje uči in njegova uporaba je bolj nagnjena k napakam. Pomeni tudi, da koda, ki uporablja te metode, postane manj prilagodljiva, ker se mora spremeniti, če želite spremeniti način dodajanja elementov.

Upoštevanje konteksta je druga oblika doslednosti, čeprav je to povezano z dejavniki, ki so zunaj API-ja. Odličen, neprogramski primer tega je, kako pravilo ceste - promet z desne ali leve strani - vpliva na zasnovo avtomobilov v različnih državah. Oblikovalci avtomobilov upoštevajo ta okoljski dejavnik pri namestitvi vozniškega sedeža na desni ali levi strani avtomobila.

$config[zx-auto] not found$config[zx-overlay] not found