Ohjelmointi

Mikä on API? Selitys sovellusten ohjelmointirajapinnoista

API tarkoittaa sovellusten ohjelmointirajapintaa, konseptia, jota sovelletaan kaikkialla komentorivityökaluista yrityksen Java-koodiin Ruby on Rails -verkkosovelluksiin. API on tapa ohjelmallisesti toimia erillisen ohjelmistokomponentin tai resurssin kanssa.

Ellet kirjoita jokaista koodiriviä tyhjästä, olet vuorovaikutuksessa ulkoisten ohjelmistokomponenttien kanssa, jokaisella on oma sovellusliittymä. Vaikka kirjoitat jotain kokonaan tyhjästä, hyvin suunnitellulla ohjelmistosovelluksella on sisäiset sovellusliittymät, jotka auttavat järjestämään koodia ja tekevät komponenteista uudelleenkäytettäviä. Ja on olemassa lukuisia julkisia sovellusliittymiä, joiden avulla voit hyödyntää muualla verkossa kehitettyjä toimintoja.

Mikä on API?

API määritellään määrittelyksi mahdollisille vuorovaikutuksille ohjelmistokomponentin kanssa. Mitä se tarkalleen tarkoittaa? Kuvittele, että auto oli ohjelmistokomponentti. Sen sovellusliittymä sisältäisi tietoja mitä se voi tehdä - kiihdyttää, jarruttaa, kytkeä radion päälle jne. Se sisältäisi myös tietoja Miten voit saada sen tekemään nuo asiat. Esimerkiksi kiihdyttämiseksi laitat jalkasi kaasupolkimelle ja työnnät.

Sovellusliittymän ei tarvitse selittää, mitä tapahtuu moottorin sisällä, kun laitat jalkasi kaasupolkimeen. Siksi, jos opit ajamaan polttomoottorilla varustettua autoa, voit siirtyä sähköauton ratin taakse tarvitsematta oppia kokonaan uusia taitoja. mitä ja Miten tiedot tulevat yhteen API: ssa määritelmä, joka on abstrakti ja erillinen itse autosta.

Yksi asia on pidettävä mielessä, että joidenkin sovellusliittymien nimiä käytetään usein viittaamaan sekä vuorovaikutusten määrittelyyn että todelliseen ohjelmistokomponenttiin, jonka kanssa olet vuorovaikutuksessa. Esimerkiksi lause "Twitter API" ei viittaa pelkästään sääntöihin, jotka koskevat ohjelmallista vuorovaikutusta Twitterin kanssa, vaan sen ymmärretään yleensä tarkoittavan asiaa, johon olet vuorovaikutuksessa, kuten artikkelissa "Analysoimme tweettejä, joista saimme Twitter-sovellusliittymän kautta. "

API abstraktiokerroksena

Ohjelmistojen osalta sovellusliittymät ovat kirjaimellisesti kaikkialla. API: t kulkevat käsi kädessä yhden tietotekniikan perustavanlaatuisimmista käsitteistä: abstraktio. Abstraktio on vain tapa järjestää järjestelmän monimutkaisuus siten, että monimutkaiset toimet voidaan hoitaa yksinkertaisella tavalla. Ajattele tätä abstraktiota, kuten ne Amazon Dash Buttons -akut, paristokäyttöiset, painike-piirilevyt, joilla voit tilata niittejä Amazonilta. Tältä he näyttävät:

Voit tilata viivapainikkeen Amazonilta ja yhdistää sen älypuhelimesi sovelluksella Wi-Fi-verkkoon, Amazon-tiliisi ja tuotteeseesi, esimerkiksi suosikki paperipyyhkeesi. Sitten, kun haluat tilata lisää paperipyyhkeitä, paina vain painiketta. Viiva-painike muodostaa yhteyden Internetiin ja lähettää viestin tilauksen tekemiseen tilillesi. Muutamaa päivää myöhemmin paperipyyhkeet saapuvat kotiovellesi.

Kuten API, Dash Button on autuaan yksinkertainen käyttöliittymä, joka piilottaa kaikenlaisen monimutkaisuuden kulissien taakse. Tilaamasi tuotteen tunnus on haettava jostakin tietokannasta. Toimitusosoitteesi on vedettävä tililtäsi. Lähin paperipyyhkeesi varastointikeskus on määritettävä ja ilmoitettava sen jälkeen tuotteen poistamiseksi käytettävissä olevasta varastosta ja pakkaamisesta. Lopuksi paketti on ohjattava jonkin verran lentokoneiden, kuorma-autojen ja pakettiautojen yhdistelmää muiden pakettien kanssa tavalla, joka varmistaa, että kaikki paketit saapuvat määränpäähänsä tehokkaasti.

Kuvittele nyt, että sinun oli koordinoitava kaikki nämä asiat asiakkaana. Et koskaan tilannut paperipyyhkeitä, koska ne ovat liian monimutkaisia ​​ja aikaa vieviä ja sinulla on parempia asioita. Onneksi koko koettelu erotetaan sinusta. On olemassa pitkä, toisiinsa kytketty tietokonejärjestelmien ja ihmisen prosessien ketju, joka saa nämä paperipyyhkeet näkymään kotiovellesi, mutta sinun on vain ajateltava painikkeen painamista.

Tätä API: t ovat kuin ohjelmoijille. Ne vaativat valtavan määrän monimutkaisuutta ja määrittelevät suhteellisen yksinkertaisen joukon vuorovaikutuksia, joita voit käyttää sen sijaan, että tekisit kaiken itse. Missä tahansa ohjelmistoprojektissa käytät todennäköisesti kymmeniä, ellei satoja sovellusliittymiä suoraan, ja kukin näistä sovellusliittymistä perustuu muihin sovellusliittymiin ja niin edelleen.

Julkiset sovellusliittymät ja API-integraatio

API: t ovat pitkäaikainen käsite tietokoneohjelmoinnissa, ja ne ovat olleet osa kehittäjien työkalupaketteja jo vuosia. Perinteisesti sovellusliittymiä käytettiin samalla koneella toimivien koodikomponenttien yhdistämiseen. Laajan verkottumisen lisääntyessä yhä enemmän julkiset sovellusliittymät, joskus kutsutaan avoimet sovellusliittymät, ovat tulleet saataville. Julkiset sovellusliittymät ovat ulospäin suuntautuvia ja niihin pääsee Internetin kautta, joten voit kirjoittaa koodia, joka on vuorovaikutuksessa muiden toimittajien koodien kanssa verkossa. tämä prosessi tunnetaan nimellä API-integraatio.

Tämäntyyppisten koodien yhdistelmien avulla käyttäjät voivat sekoittaa eri toimittajien toimintoja omissa järjestelmissään. Jos esimerkiksi käytät markkinoinnin automaatio-ohjelmistoa Marketo, voit synkronoida siellä olevat tiedot Salesforce CRM -toiminnon kanssa.

Sanaa "avoin" tai "julkinen" ei tule tässä yhteydessä tulkita tarkoittavan "ilmaista". Sinun on silti oltava Marketo- ja Salesforce-asiakas, jotta tämä toimii. Mutta näiden sovellusliittymien saatavuus tekee integroinnista paljon yksinkertaisemman prosessin kuin se muuten olisi. ( on loistava luettelo julkisista sovellusliittymistä, joista sinun pitäisi tietää.)

Verkkopalvelut ja sovellusliittymät

Saatat muistaa termin web-palvelut 00-luvun alusta ja luulen, että avoimen sovellusliittymän idea kuulostaa melko samanlaiselta. Itse asiassa verkkopalvelu on tietyntyyppinen avoin sovellusliittymä, joka täyttää melko jäykät spesifikaatiot, mukaan lukien ne, jotka määritetään XML-muunnoksessa Web Services Description Language (WSDL).

Verkkopalveluja oli tarkoitus käyttää osana palvelukeskeistä arkkitehtuuria (SOA). Kuten Nordic APIs -blogi selittää, se antoi verkkopalveluille jotain huonoa nimeä, koska SOA: t eivät koskaan hyödyntäneet potentiaaliaan. Palveluiden välisessä viestinnässä käytettyjen tekniikoiden kehitys - erityisesti kevyempi ja joustavampi REST - on myös jättänyt verkkopalvelut jonkin verran taakse julkisten sovellusliittymien maailmassa.

REST-sovellusliittymät

Verkkopalvelut suunniteltiin alun perin kommunikoimaan SOAP: n (Simple Object Access Protocol) avulla, joka on XML-asiakirjoja HTTP: n kautta lähettävä viestintäkäytäntö. Nykyään useimmat verkkopohjaiset sovellusliittymät käyttävät kuitenkin REST-tilaa (Representational State Transfer) arkkitehtonisena tyylinä.

Roy Fielding esitteli RESTin virallisesti väitöskirjassaan vuonna 2000. Se on joukko arkkitehtonisia komponentteja, suunnitteluperiaatteita ja vuorovaikutusta, jota käytetään rakentamaan hajautettuja järjestelmiä, joihin liittyy kaikenlaista mediaa (teksti, video jne.). Ytimessä REST on tyyli rakennusjärjestelmistä, joka mahdollistaa joustavan viestinnän ja tiedon näyttämisen verkossa, samalla kun se tarjoaa tarvittavan rakenteen yleiskäyttöisten komponenttien rakentamiseen.

REST-sovellusliittymässä a resurssi voi olla melkein mitä tahansa, mutta esimerkkejä ovat käyttäjä, luettelo tweeteistä ja twiittien haun nykyiset tulokset. Jokainen näistä resursseista on osoitettavissa osoitteessa a resurssitunniste, joka verkkopohjaisten REST-sovellusliittymien tapauksessa on yleensä URL-osoite, kuten //api.twitter.com/1.1/users/show?screen_name=twitterdev. Kun sovellus pyytää resurssia tunnisteen avulla, sovellusliittymä toimittaa nykyisen edustus tämän resurssin sovellukseen muodossa, jota sovellus voi käyttää, kuten JPEG-kuva, HTML-sivu tai JSON.

Yksi RESTin suurimmista erottelijoista on, että siihen liittyy tietojen lähettämistä pyytävälle sovellukselle. Vaikka tämä tarjoaa suuren joustavuuden, jolloin sovellus voi tehdä mitä tahansa haluamansa datan kanssa, se maksaa tehokkuuden kustannuksella. Tietojen lähettäminen verkon kautta käsittelyä varten on melko hidasta verrattuna käsittelyyn tietojen sijainnissa ja tulosten lähettämiseen.

Tietysti "tehokkaan" lähestymistavan ongelmana on, että tietoja isännöivien järjestelmien on tiedettävä, mitä sovelluksia haluat tehdä siihen etukäteen. Joten REST on oikea tapa rakentaa API, jolla on yleiskäyttöinen käytettävyys ja joustavuus.

API-esimerkkejä

Siellä on runsaasti julkisia sovellusliittymiä, joiden kanssa voit olla vuorovaikutuksessa, monet teollisuuden behemoteista. Mahdollisuus käyttää jonkin alustayhtiön koodia ohjelmallisesti API: n kautta tekee niistä pohjimmiltaan alustan. Joitakin merkittäviä API-esimerkkejä ovat:

  • Google-sovellusliittymät, joiden avulla voit yhdistää koodisi kaikkiin Google-palveluihin Mapsista Kääntäjään. Sovellusliittymät ovat niin tärkeitä Googlelle, että he hankkivat Apigeen, johtavan sovellusliittymien hallinta -alustan.
  • Facebook-sovellusliittymät, joiden avulla voit käyttää ohjelmallisesti Facebookin sosiaalista kuvaa ja markkinointityökaluja. (Yritys on rajoittanut vain sitä, mitä käyttäjätietoja voit käyttää näiden sovellusliittymien kautta Cambridge Analytican ja muiden skandaalien aikana.)

Jotta saisimme todella käsityksen siitä, miten sovellusliittymät toimivat, sukelkaamme syvällisesti kahteen osaan: Java-sovellusliittymä, jota Java-kehittäjät käyttävät vuorovaikutuksessa Java-alustan kanssa, ja Twitter-sovellusliittymä, julkinen sovellusliittymä, jota käyttäisit vuorovaikutuksessa sosiaalisen median kanssa. verkkopalvelu.

Java-sovellusliittymä

Java-sovellusliittymä on ohjelmistokomponenttien kirjasto, joka on saatavana "valmiina" kaikille, jotka ovat asentaneet Java-kehityspaketin. Nämä komponentit toteuttavat yleisiä tehtäviä ja lisäävät yleensä tuottavuutta, koska ohjelmoijien ei tarvitse aloittaa tyhjästä joka kerta. Yksi ohjelmistossa käytetyistä peruskomponenteista on nimeltään Luettelo, joka, kuten voit odottaa, seuraa kohteiden luetteloa. Java-sovellusliittymä määrittelee mitä voit tehdä luettelolla: lisätä kohteita, lajitella luettelo, selvittää, onko kohde luettelossa, jne. Se myös määrittelee Miten suorittaa nämä toimet. Luettelon lajittelemiseksi sinun on määritettävä, kuinka haluat luettelon lajitellun: aakkosjärjestyksessä, numeerisesti laskevassa, kirkkaimmasta tummimpaan väriin jne.

Twitter-sovellusliittymä

Twitter-sovellusliittymä on verkkopohjainen JSON-sovellusliittymä, jonka avulla kehittäjät voivat olla ohjelmallisesti vuorovaikutuksessa Twitter-tietojen kanssa. Toisin kuin Java-kehityspakettiin sisältyvä Java-sovellusliittymä, Twitter-sovellusliittymä on verkkopohjainen sovellusliittymä. Sitä on käytettävä tekemällä Internetin kautta pyyntöjä Twitterin ylläpitämille palveluille.

Web-pohjaisen sovellusliittymän, kuten Twitterin, avulla sovelluksesi lähettää HTTP-pyynnön, aivan kuten verkkoselain. Mutta sen sijaan, että vastaus toimitettaisiin verkkosivuna, ihmisen ymmärryksen vuoksi se palautetaan muodossa, jonka sovellukset voivat helposti jäsentää. Tätä tarkoitusta varten on olemassa erilaisia ​​muotoja, ja Twitter käyttää suosittua ja helppokäyttöistä muotoa nimeltä JSON. (Jos et ole perehtynyt JSON: iin, saatat haluta viettää muutaman minuutin lukemalla sitä täällä.)

Yksi Twitterin peruselementeistä on twiitti. Twitter-sovellusliittymä kertoo sinulle mitä voit tehdä tweeteillä: etsiä twiittejä, luoda twiitti, suosikki twiitti. Se kertoo myös sinulle Miten suorittaa nämä toimet. Jos haluat etsiä twiittejä, sinun on määritettävä hakukriteerisi: hakutermit tai hashtagit, maantieteellinen sijainti, kieli jne.

API-suunnittelu

API-suunnittelu on prosessi, jolla API: n "mitä" ja "miten" muotoillaan. Kuten mitä tahansa muuta, mikä voidaan luoda, API: n suunnitteluun otetaan huomioon erilaiset ajattelutavat ja huolenpito, mikä johtaa vaihteleviin API-laatutasoihin. Hyvin suunnitelluilla sovellusliittymillä on johdonmukainen käyttäytyminen, niiden konteksti otetaan huomioon ja pidetään käyttäjien tarpeet mielessä.

Yhdenmukainen käyttäytyminen sovellusliittymässä vaikuttaa suuresti nopeuteen, jolla se voidaan oppia, ja todennäköisyyteen, että ohjelmoijat tekevät virheitä käyttäessään sitä. Yleensä samankaltaisia ​​toimintoja suorittavien sovellusliittymien tulisi toimia samalla tavalla niiden teknisistä eroista riippumatta. Esimerkkinä epäyhtenäisestä sovellusliittymästä tarkastellaan kahta tapaa lisätä kohde Java-luetteloon:

Vaikka kaksi tapaa lisätä kohteita luetteloon tekevät saman, niiden palautustyypit (looginen ja mitätön) ovat erilaiset. Tätä sovellusliittymää käyttävien kehittäjien on nyt seurattava, mikä menetelmä palauttaa minkä tyyppisen, mikä tekee sovellusliittymästä vaikeampaa oppia ja sen käyttö virhealtista. Se tarkoittaa myös, että näitä menetelmiä käyttävä koodi muuttuu vähemmän joustavaksi, koska sitä on muutettava, jos haluat vaihtaa tapaa lisätä elementtejä.

Kontekstin huomioon ottaminen on toinen johdonmukaisuuden muoto, vaikka se liittyy API: n ulkopuolisiin tekijöihin. Hieno, ei-ohjelmistomainen esimerkki tästä on se, kuinka tien sääntö - oikea- tai vasenkätinen liikenne - vaikuttaa autojen suunnitteluun eri maissa. Autosuunnittelijat ottavat tämän ympäristötekijän huomioon, kun kuljettajan istuin sijoitetaan auton oikealle tai vasemmalle puolelle.