API asetettu. Beseller-alustan API:n käyttö ja yhdistäminen

Tämä lyhyt aika on tuttu kaikille, jotka ovat jollain tavalla kohdanneet kehitystä. Mutta kaikki eivät ymmärrä, mitä se tarkalleen tarkoittaa ja miksi sitä tarvitaan. Kehittäjä Pjotr ​​Gazarov puhui API:sta yksinkertaisin sanoin blogissaan.

Lyhenne API tarkoittaa "Application Programming Interface" (sovellusohjelmointiliittymä, sovellusohjelmointiliittymä). Useimmat suuret yritykset kehittävät jossain vaiheessa API:ita asiakkaille tai sisäiseen käyttöön. Ymmärtääksesi kuinka ja miten API:ta käytetään kehityksessä ja liiketoiminnassa, sinun on ensin ymmärrettävä, miten World Wide Web toimii.

World Wide Web ja etäpalvelimet

WWW:tä voidaan pitää valtavana linkitettyjen palvelimien verkostona, joka tallentaa jokaisen sivun. Tavallinen kannettava tietokone voidaan muuttaa palvelimeksi, joka pystyy palvelemaan koko verkon sivustoa, ja kehittäjät käyttävät paikallisia palvelimia sivustojen luomiseen ennen niiden avaamista laajalle käyttäjäjoukolle.

Kun kirjoitat selaimen osoiteriville www.facebook.com vastaava pyyntö lähetetään Facebook-etäpalvelimelle. Kun selain on vastaanottanut vastauksen, se tulkitsee koodin ja hahmontaa sivun.

Joka kerta kun käyttäjä vierailee verkkosivulla verkossa, hän on vuorovaikutuksessa etäpalvelimen API:n kanssa. API on palvelimen osa, joka vastaanottaa pyyntöjä ja lähettää vastauksia.

API tapana palvella asiakkaita

Monet yritykset tarjoavat API:n valmiina tuotteena. Esimerkiksi Weather Underground myy pääsyn säätietojen sovellusliittymään.

Käyttöskenaario: pienen yrityksen nettisivuilla on lomake ajanvaraukseen asiakkaille. Yritys haluaa upottaa Google-kalenterin siihen, jotta asiakkaat voivat luoda automaattisesti tapahtuman ja täyttää tulevan kokouksen tiedot.

API-sovellus: tavoite - sivustopalvelimen tulee ottaa suoraan yhteyttä Googlen palvelimeen ja pyytää luoda tapahtuma määritetyillä tiedoilla, saada vastaus Googlelta, käsitellä se ja välittää selaimelle tarvittavat tiedot, esimerkiksi vahvistusviesti käyttäjälle .

Vaihtoehtoisesti selain voi tehdä pyynnön Google-palvelimen API:lle ohittaen yrityksen palvelimen.

Miten Google-kalenterin API eroaa verkon minkä tahansa muun etäpalvelimen API:sta?

Teknisesti ero on pyynnön ja vastauksen muodossa. Täydellisen verkkosivun luomiseksi selain odottaa vastausta HTML-kuvauskielellä, kun taas Google-kalenterin sovellusliittymä palauttaa vain tiedot JSON-muodossa.

Jos API-pyynnön tekee yrityksen verkkosivuston palvelin, se on asiakas (kuten asiakas on selain, kun käyttäjä avaa verkkosivuston).

API:n ansiosta käyttäjä saa mahdollisuuden suorittaa toiminnon poistumatta yrityksen verkkosivuilta.

Useimmat nykyaikaiset verkkosivustot käyttävät ainakin muutamia kolmannen osapuolen sovellusliittymiä. Monissa tehtävissä on jo valmiita ulkopuolisten kehittäjien tarjoamia ratkaisuja, olipa kyseessä sitten kirjasto tai palvelu. Usein on helpompaa ja luotettavampaa turvautua valmiiseen ratkaisuun.

Monet kehittäjät jakavat sovelluksen useille palvelimille, jotka ovat vuorovaikutuksessa keskenään API:n avulla. Palvelimia, jotka suorittavat aputoimintoa suhteessa pääsovelluspalvelimeen, kutsutaan mikropalveluiksi.

Siten, kun yritys tarjoaa käyttäjilleen API:n, se tarkoittaa yksinkertaisesti, että se on luonut joukon erityisiä URL-osoitteita, jotka palauttavat vain tietoja vastauksena.

Tällaiset pyynnöt voidaan usein lähettää selaimen kautta. Koska tiedonsiirto HTTP:n kautta tapahtuu tekstimuodossa, selain pystyy aina näyttämään vastauksen. Esimerkiksi selaimen kautta pääset suoraan GitHub-sovellusliittymään (https://api.github.com/users/petrgazarov) ilman käyttöoikeustunnusta ja saat seuraavan vastauksen JSON-muodossa:

Selain näyttää JSON-vastauksen täydellisesti, joka voidaan lisätä koodiin. Riittää, kun purat tiedot tällaisesta tekstistä, jotta voit käyttää sitä harkintasi mukaan.

Muutamia API-esimerkkejä lisää

Sanaa "sovellus" (sovellettu, sovellus) voidaan käyttää eri merkityksissä. API:n yhteydessä se tarkoittaa:

  • ohjelmisto, jolla on tietty toiminto,
  • palvelin kokonaisuudessaan, sovellus kokonaisuutena tai vain erillinen osa sovelluksesta.

Mikä tahansa ohjelmisto, joka voidaan selvästi erottaa ympäristöstä, voi korvata englanninkielisen lyhenteen "A"-kirjaimen, ja sillä voi olla myös jonkinlainen API. Esimerkiksi kun kehittäjä ottaa käyttöön kolmannen osapuolen kirjaston koodiin, siitä tulee osa koko sovellusta. Koska kirjasto on itsenäinen ohjelmisto, siinä on jonkinlainen API, jonka avulla se voi olla vuorovaikutuksessa muun sovelluskoodin kanssa.

Olio-suunnittelussa koodi esitetään objektien kokoelmana. Sovelluksessa voi olla satoja tällaisia ​​objekteja, jotka ovat vuorovaikutuksessa toistensa kanssa. Jokaisella niistä on oma API - sarja julkinen ominaisuuksia ja menetelmiä vuorovaikutukseen sovelluksen muiden objektien kanssa. Esineillä voi myös olla yksityinen, sisäinen logiikka, joka on piilotettu ympäristöltä ja joka ei ole API.

API on lyhenne sanoista Application Programming Interface. Yleensä jokainen ohjelma, käyttöjärjestelmä jne. on oma API. Windows API koostuu useista toiminnoista, joiden avulla voit käyttää Windows-järjestelmärakenteita. Kaikki Windows API -funktiot on kirjoitettu C ++ -kielellä, mutta ohjelmasi voivat käyttää niitä turvallisesti Visual Basicista "a. API-funktiot on ilmoitettava! API-funktioiden määrittelyssä on seuraava syntaksi:
Ilmoita funktion nimi Lib "libname" [()]

Lib-avainsana määrittää, mistä kirjastosta Visual Basic löytää halutun funktion. Tämä viittaa dynaamisiin linkkikirjastoihin (*.dll). Mutta sinun ei tarvitse määrittää laajennusta aliaksennimessä. Alias ​​määrittää, millä nimellä ohjelman tulee etsiä annettua toimintoa kirjastosta. Windows-API mahdollistaa kaksi asiaa: tiettyjen töiden suorittamisen ja järjestelmäresurssien käytön. Voit tarkastella luetteloa erilaisista API-funktioista ja niiden määrittelyistä käyttämällä standardia API-Viewer -ohjelmaa.

Windows-sovellusliittymiä voidaan kutsua Visual Basicista suorittamaan tehtäviä, joihin tavallinen Visual Basic -koodi ei riitä. Esimerkiksi tavalliset Visual Basic -työkalut eivät salli tietokoneen käynnistämistä uudelleen. Uudelleenlataus voidaan kuitenkin tehdä kutsumalla sopiva Window API -toiminto.

Huomautus: Jos API-funktio odottaa sinulta muuttujaa, sinun täytyy välttämättä ilmoittaa se ja täytä se välilyönneillä. Nuo. muuttujan on oltava käyttäjän määrittelemä. Nämä ovat C ++ -kielen ominaisuuksia, jolla Windows API kirjoitettiin.

Katsotaanpa pari esimerkkiä:

Oletetaan, että sovelluksesi on määritettävä hakemisto, johon Windows 95/98/NT -käyttöjärjestelmä on asennettu. Helpoin tapa tehdä tämä on käyttää GetWindowsDirectory API -toimintoa.

1. Ilmoitamme moduulissa GetWindowsDirectory API -funktion:

3. Main-alirutiiniin syötetään:

Koodi
"API:lle välitettävä muuttuja on jo meillä
"ilmoitti ja täytä nyt aukot.
Tilaa pitäisi olla suunnilleen yhtä paljon
"Kuinka monta merkkiä muuttujassa pitäisi olla noin.
"Tässä tapauksessa 20 riittää, koska Windows on yleensä asennettuna
" C:\Windows tai C:\Win95 jne. Eli pikemminkin merkkien summa
"yhteensä ei ylitä 20
WinDir = Space (20)
Debug.Print Left(WinDir, GetWindowsDirectory(WinDir, 20))
"Koska API on funktio, sen on palautettava jotain
"arvo. Tässä tapauksessa GetWindowsDirectory-funktio palauttaa
"halutun arvon pituus. Eli jos esimerkiksi haluttu arvo
" on C:\WINDOWS, niin funktio palauttaa arvon 10.
"Muuttujan pituus on 20. Nämä 10 merkkiä kirjoitetaan
"ensin ja sitten menee 10 välilyöntiä. Miksi ihmettelemme,
"10 ylimääräistä merkkiä? Se käyttää tarpeetonta muistia...
"Siksi vasemmalla käskyllä ​​vedämme WinDir-muuttujan pois
"Juuri niin monta ensimmäistä merkkiä kuin tarvitaan...

Toinen esimerkki:
Ohjelmasi on esimerkiksi määritettävä, mikä mediasi on CD-ROM-levy tai kauko-ohjain ja niin edelleen. "Alkuperäinen" Visual Basic -työkalupakki ei salli sinun tehdä tätä - sinun on turvauduttava GetDriveType API -toiminnon apuun.

1. Ilmoitamme moduulissa GetDriveType API -funktion:

2. Kirjoita Main-aliohjelmaan:

Tässä on mitä GetDriveType-toiminto palauttaa meille esimerkiksi minulle:
V:-2
C: -3
D:-3
E: -5
Kaikki muut kirjaimet on merkitty numerolla 1. Kyllä, ymmärtääksesi nämä nimitykset, sinun on tiedettävä seuraava taulukko:

Vakionimi ja arvo:
DRIVE_UNKNOWN 0
DRIVE_NO_ROOT_DIR 1
DRIVE_REMOVEABLE 2
DRIVE_FIXED 3
DRIVE_REMOTE 4
DRIVE_CDROM 5
DRIVE_RAMDISK 6

Main-alirutiini moduulissa on kuin Form_Load lomakkeella, ts. pidetään pääasiallisena ja ladataan oletuksena. Takaisin

Monien API-toimintojen tarkoitus on helppo arvata niiden nimen perusteella. Esimerkiksi GetWindowsDirectory (hae Windows-hakemisto) tai GetDriveType (hae mediatyyppi).

Vastaus otettu osoitteesta: www.mtsecurity.narod.ru

Olemme julkaisseet uuden kirjan "Sosiaalisen median sisältömarkkinointi: Kuinka päästä tilaajien päähän ja saada heidät rakastumaan brändiisi."

Tilaa

API on ulkoinen käyttöliittymä sovelluksen ohjelmointiin, pääsyyn sivustoille tietyn protokollan avulla tiedon saamiseksi ja sisäisiin palveluihin liittyvien ohjelmien kehittämisen yksinkertaistamiseksi.

Mitä API tarkoittaa

Yksinkertaisin analogia API:n käyttämiselle olisi prosessi, jossa työstetään laskinta monimutkaisia ​​laskelmia varten. Oletetaan, että sinulla on tehtävä, ymmärrät sen olemuksen, pystyt rakentamaan yhtälöitä ja kaavioita, mutta et osaa suorittaa aritmeettisia operaatioita numeroiden kanssa. Vieressäsi on laskin, joka voi tehdä nämä toiminnot helposti. Et tiedä, mitä tietokoneen sisällä tapahtuu, eikä sinun edes tarvitse tietää. Annat tiedot yhdessä muodossa ja vastaanotat ne toisessa, tarpeidesi mukaisessa muodossa.

Mikä tahansa API toimii tällä periaatteella. Sinua ei kiinnosta miten ohjelma saa vastauksen, mitä polkua pyyntö kulkee sen sisällä, miten laskelmat tehdään. Olet varma vain yhdestä asiasta - vastauksena annetaan standardoituja tietoja toiminnan onnistumisesta tai sen virheestä.

API-liittymän avulla et tuhlaa aikaa, rahaa ja vaivaa "uuden pyörän" ostamiseen. Saat toimivan tietoportin, joka vastaanottaa ja lähettää tarvittavat tietomäärät kehitystäsi varten.

Plussat:

  • Säästöjä käyttöliittymäsi kehittämisessä.
  • Asian vivahteita ei tarvitse ymmärtää.
  • API:t ovat ammattilaisten kehittämiä, ja ne ottavat huomioon kaikki sisäisten prosessien tekijät, joista et ehkä tiedä ratkaisuasi luodessasi.
  • Mahdollistaa yhteydenpidon suljettujen palvelujen kanssa muiden protokollien kautta.

Miinukset:

  • Kohdepalvelun päivityksen yhteydessä API ei aina heti saa täyttä toimivuutta.
  • Et voi havaita virheitä etkä tiedä kuinka prosessi etenee jonkun toisen koodissa.
  • API ei aina anna aikaoptimoitua tulosta, koska se on suunniteltu käsittelemään yleisiä tapauksia, ei yksittäisiä.

API-esimerkkejä

API-integraatio on prosessi, jossa sovellus liitetään ulkoiseen tietoliitäntään. Työskentely API:n kanssa alkaa tutkimalla dokumentaatiota ja käytettyjä protokollia ja sitten integroimalla ohjelmasi suoraan käyttöliittymään. Harkitse suosituimpia palveluita, joilla on oma API.

VKAPI

Ulkoinen käyttöliittymä suositun sosiaalisen verkoston VKontakten vuorovaikutukseen asiakkaiden sekä selain- ja palvelinsovellusten kanssa. Voit hallita yhteisön viestejä, ryhmien kansia ja käyttäjäsivuja, jos sinulla on asianmukaiset avaimet.

Kaikki pyynnöt tehdään osoitteeseen https://api.vk.com/method/

Kenoviivaa seuraa käytetyn API-menetelmän nimi ja GET-pyyntöparametrit välitetään. Vastaus tulee myös HTTPS:n kautta JSON-muodossa.

TELEGRAM BOT API

Yksi suosituimmista API-liittymistä. Sen avulla botteja ohjataan Telegram messengerissä. Kun olet luonut botin @botfatherin kautta ja hankkinut tarvittavat pääsyavaimet, voit aloittaa vuorovaikutuksen taustajärjestelmän kanssa.

Pyynnöt tehdään https://api.telegram.org/bot0000000:token/

Jos bot0000000 korvataan bottisi yksilöllisellä tunnisteella, ja token ilmaisee salaisen avaimen.

Pyynnöt lähetetään HTTPS-yhteyksien kautta, menetelmän nimi määritetään vinoviivalla pääosoitteeseen. Vastaus tulee JSON-muodossa.

AVAA SÄÄKARTTA API

Usein on tarpeen saada säätiedot ilman kolmannen osapuolen widgetejä ja maksullisia sovelluksia. OpenWeatherMap-palvelu tulee apuun avoimen ja ilmaisen API:n avulla. Rekisteröitymisen ja tunnistetietojen hankkimisen jälkeen voit lähettää palvelinskripteistä sääpyyntöjä ympäri maailmaa. Vastauksena kaupunkitunnukseen resurssi palauttaa tarkimmat tiedot nykyisestä säästä ja antaa ennusteen lähitulevaisuudelle.

Työmuoto: HTTP-lähetys api.openweathermap.org/data/2.5/weather?id= kautta, joka ilmaisee halutun kaupungin tunnistenumeron. Palvelimen vastaus: JSON.

Google Maps API

Mikä voisi olla mukavampaa kuin interaktiivinen maailmankartta sivustolla? Varsinkin jos tämä ei ole Google Mapsin lisäysmalli, vaan henkilökohtainen versio suositusta kartasta, jossa on henkilökohtaisia ​​merkkiryhmiä. Kartta on vuorovaikutuksessa muiden sivuston komentosarjojen kanssa ja lähettää tietoja napsautuksista ja koordinaateista.

Google Maps JavaScript API tarjoaa samanlaisia ​​ominaisuuksia. Moduuli on täysin käsikirjoitettu ja toimii selainpuolella, joten emme tarvitse HTTP-pyyntöjä PHP:ltä ja otsikoiden muodostamista palvelinpuolella, kuten muissa API:issa.

Esimerkiksi merkin sijoittaminen kartalle näyttäisi tältä:

var mark = new google.maps.Marker((
sijainti: myPOS,
kartta:kartta,
otsikko: "Hei!"
});

Mikä on API:n käyttö ja miksi se on hyödyllinen

Hyödyllisiä ominaisuuksia on melko vähän.

Ensimmäinen näkökohta

Voit luoda vuorovaikutteisen käyttäjän vuorovaikutuksen sosiaalisten verkostojen ja pikaviestien kanssa, käyttää kolmannen osapuolen tietokonejärjestelmien ominaisuuksia valuuttakurssien, sään ja muiden tärkeiden tietojen näyttämiseen.

API:n avulla voit muodostaa välittömästi yhteyden muiden resurssien ja ohjelmistoratkaisujen palvelimille, mikä tyypillisessä toteutuksessa vaatisi viikkoja kestävän kehityksen. API yksinkertaistaa elämää siellä, missä ainutlaatuista toteutusta ei tarvita, ja luotettavuus ja turvallisuus ovat etusijalla.

Toinen näkökohta

Jos omistat monimutkaisen laskentatehon, suositun palvelun tai tietovaraston avoimeen tai puoliyksityiseen käyttöön, olisi hyvä askel nostaa oma API. Mitä se antaa:

  • Suuri asiakasvirta.
  • Yksinkertaistettu pääsy palveluihisi kumppaneille.
  • Palvelun käytön tilastollisen analyysin mukavuus.

Kolmas aspekti

Melkein sama kuin toinen. Mutta ilman tarvetta ottaa käyttöön API julkista käyttöä varten. Jos sinulla on portaali ja haluat luoda sille Android/IOS-mobiilisovelluksen, järjestelmän uudelleenkirjoittaminen yhdelle API:lle on paras ratkaisu. Koko tietorakenne on systematisoitu. Sivusto ja sovellus toimivat yksittäisten tietokanavien kautta.

API:t voivat olla samanaikaisesti hauskoja ja turhauttavia. Toisaalta vuorovaikutuksessa muiden sovellusten kanssa voit lisätä huomattavasti yleisön tavoittavuutta ja sovelluksesi "vau-efektiä". Toisaalta tähän sisältyy lukuisten asiakirjojen lukeminen, todennusstrategioiden oppiminen ja epätietoisten (tai jopa puuttuvien) virheilmoitusten jäsentäminen.

Ensinnäkin, jos et vieläkään täysin ymmärrä, mitä API (Application Programming Interface) on, lue Skillcrushin selitys ja tämän artikkelin ensimmäinen osa.

"API" on uskomattoman laaja käsite - aina kun sovelluksesi "puhuu" toiselle sovellukselle, se tapahtuu jonkinlaisen API:n kautta. Myös oman sovelluksesi komponentit, kuten Railsin eri osat, kommunikoivat keskenään API:n kautta. Ne ovat enemmän tai vähemmän itsenäisiä alisovelluksia, jotka välittävät tiedot, joita ne tarvitsevat suorittaakseen omia erityistehtäviään. Sovellusmaailmassa kaikki on API!

Kun luot sovelluksia, joissa on dynaamisemmat käyttöliittymätoiminnot (joko yksisivuisia Javascript-sovelluksia tai yksinkertaisia ​​sovelluksia erillisillä AJAX-kutsuilla), ne kommunikoivat Rails-taustajärjestelmän kanssa oman API-liittymäsi kautta, mikä on oikeastaan ​​vain pari ylimääräistä koodiriviä . , joka kertoo ohjaimillesi, kuinka JSON- tai XML-koodia käytetään HTML:n sijaan.

Tässä opetusohjelmassa opit luomaan oman sovellusliittymän. Seuraavilla oppitunneilla käsittelemme vuorovaikutusta muiden sovellusten API:iden kanssa. Oppituntien pitäisi olla hyvä ponnahduslauta tämän aiheen oppimiselle, mutta ne eivät todennäköisesti pysty kattamaan kaikkia tapauksia. Suuri osa API-työskentelystä on kyky lukea niiden dokumentaatiota ja selvittää, mitä he haluavat sinulta.

Pisteitä pohdinnasta

Tarkista kysymykset ja katso, tiedätkö vastaukset. Tarkista itsesi uudelleen tehtävän suorittamisen jälkeen.

  • Kuinka Rails ymmärtää, minkä tyyppistä tiedostoa odotat vastauksena, kun lähetät HTTP-pyynnön.
  • Mikä on #respond_to-menetelmän tarkoitus?
  • Kuinka palautat käyttäjäobjektin (User) määrittäessäsi attribuutteja, joita et halua sisällyttää kyseiseen objektiin (eli et voi palauttaa vain User.first)?
  • Nimeä 2 vaihetta #to_json-menetelmän kulissien takana.
  • Kuinka kerron ohjaimen toiminnolle, että se tuottaa vain virheilmoituksen?
  • Kuinka luoda oma virheilmoitus?
  • Miksi et voi käyttää istuntopohjaisia ​​ohjaimen todennusmenetelmiä, jos haluat sallia ohjelmallisen yhteyden API:llesi?
  • Mikä on "palvelukeskeinen arkkitehtuuri"?

API-perustiedot

Rails-sovelluksesi on itse asiassa jo API, vaikka et ehkä ajattele sitä API:na. Käyttäjien käynnistämä verkkoselain on myös ohjelma, joten se lähettää itse asiassa API-pyynnön Rails-sovelluksellesi, kun käyttäjä avaa uuden sivun. Meillä on tapana ajatella näin, koska HTML-mallien renderöinti on niin yleinen tehtävä, että me vain koodaamme tämän toiminnon palvelinohjelmiimme vakiovastaustyypiksi ja pidämme kaikkea muuta epätavallisena.

Kuitenkin usein haluat tehdä pyynnön, joka ei vaadi sinua käymään läpi kaikkia selaimen käytön aiheuttamia päänsärkyjä. Et ehkä välitä sivun rakenteesta (HTML), mutta vastineeksi haluat puhtaita tietoja. Oletetaan, että haluat saada luettelon kaikista käyttäjistä. Voit pyytää esimerkiksi http://yourapplication.com/users , joka todennäköisesti käynnistää #index-toiminnon ja luo luettelon kaikista sovelluksen käyttäjistä.

Mutta miksi vaivautua kaikella näillä lisätiedoilla, kun haluat vain käyttäjäluettelon? Yksinkertaisin vaihtoehto olisi lähettää pyyntö samaan URL-osoitteeseen ja määrittää vastineeksi JSON- tai XML-vastauksen odotus. Jos määrität Rails-ohjaimen oikein, saat takaisin yksinkertaisen JSON-taulukkoobjektin, joka sisältää kaikki käyttäjät. Ihana!

Sama periaate pätee, kun kommunikoit ulkoisen API:n kanssa. Oletetaan, että haluat saada käyttäjän viimeisimmät "tweetit" Twitteristä. Sinun tarvitsee vain kertoa Rails-sovelluksellesi, kuinka se toimii Twitter API:n kanssa (eli todentaa itsesi), lähettää pyyntö ja käsitellä palautettavat "tweetit".

API:n luominen

Voit halutessasi tehdä Rails-sovelluksestasi puhtaan taustasovellusliittymän käyttöliittymän verkkosivuille tai yksinkertaisesti oppia lähettämään JSON, kun käyttöliittymä sitä pyytää. Tässä osiossa ei käsitellä täysimittaisten RESTful-sovellusliittymien luomista todennustoiminnolla. Tämä on sujuva johdatus sovelluksesi käsittelyyn API:na.

Perusasiat

Jos haluat Rails-sovelluksesi palauttavan JSON:n HTML:n sijaan, sinun on kehotettava ohjainta tekemään niin. Hienoa on, että sama ohjaintoiminto voi palauttaa eri tyyppejä riippuen siitä, tekeekö käyttäjä normaalin selainpyynnön vai käyttääkö API:ta komentorivin kautta. Tämä määrittää, minkä tyyppinen pyyntö tehtiin pyydetyn tiedoston laajennuksen perusteella, kuten example.xml tai example.json .

Voit tarkistaa, mitä Rails "ajattelee" odottamastasi tiedostotyypistä tarkistamalla palvelimen lokista:

Aloitettu GET "/posts/new" kohteelle 127.0.0.1 klo 2013-12-02 15:21:08 -0800 PostsControllerin käsittely#uusi HTML-muodossa

Ensimmäinen rivi kertoo, mitä URL-osoitetta pyydettiin, ja toinen kertoo, minne se ohjattiin ja kuinka Rails käsittelee sitä. Jos käyttäisit .json-laajennusta, se näyttäisi tältä:

Aloitettu GET "/posts.json" kohteelle 127.0.0.1 klo 2013-12-04 12:02:01 -0800 PostsController#index käsittely JSON-muodossa

Jos sinulla on testisovellus käynnissä, yritä pyytää eri URL-osoitteita. Jos ohjaimesi ei osaa käsitellä niitä, saatat saada virheilmoituksen, mutta sinun pitäisi silti nähdä, mitä Rails ymmärtää pyyntöjesi perusteella.

Renderöidään JSON tai XML

Kun päätät vastata JSON:lla tai XML:llä, sinun on kehotettava ohjainta hahmontamaan JSON tai XML HTML:n sijaan. Yksi tapa tehdä tämä on käyttää #respond_to-menetelmää:

Class UsersController< ApplicationController def index @users = User.all respond_to do |format| format.html # index.html.erb format.xml { render xml: @users } format.json { render json: @users } end end end

Tässä tapauksessa #respond_to välittää muotoobjektin lohkolle, johon voit liittää asianmukaisen renderöintikutsun. Jos et tee mitään, html hahmonnetaan tavallisella Rails-mallilla (tässä esimerkissä app/views/index.html.erb).

#render-toiminto on tarpeeksi älykäs ymmärtääkseen kuinka hahmontaa monenlaisia ​​​​muotoja. Kun annat sille avaimen:json , se kutsuu arvoa #to_json, tässä esimerkissä @users . Tämä muuntaa Ruby-objektisi JSON-merkkijonoiksi, jotka välitetään pyytävälle sovellukselle.

Näin saat API:si. Tietenkin API:n luominen voi olla hieman monimutkaisempaa, jos haluat tehdä hienoja asioita, mutta kyse on perusasioista.

Paluumääritteiden määrittäminen

Oletetaan, että haluat varmistaa, että et palauta käyttäjän sähköpostiosoitetta User-objektin mukana. Tässä tapauksessa haluat muuttaa palautettavia määritteitä ja muuttaa #to_json-menetelmän toimintaa.

Aiemmin olisit yksinkertaisesti ohittanut #to_json-menetelmän versiollasi, mutta nyt sinun ei tarvitse tehdä sitä - itse asiassa ohitat #as_json-menetelmän. #as_json-menetelmää käytetään #to_json-menetelmässä, joten sen muokkaaminen muuttaa implisiittisesti #to_json -menetelmän tulosta, mutta melko erityisellä tavalla.

#to_json tekee 2 asiaa: suorittaa #as_jsonin ja saa tiivisteen JSON-muotoon hahmonnettavista attribuuteista. Sen jälkeen se hahmonnetaan JSON:ksi käyttämällä ActiveSupport::json.encodea. Joten muokkaamalla #as_json, määrität tarkemmin sen osan #to_json-menetelmästä, jota haluat muuttaa.

Meidän tapauksessamme teemme tämän muokkaamalla mallissamme #as_json palauttamaan vain tarvitsemamme attribuutit:

# app/models/user.rb-luokan käyttäjä< ActiveRecord::Base # Вариант 1: Полное переопределение метода #as_json def as_json(options={}) { :name =>self.name ) # ÄLÄ sisällytä sähköpostikentän loppua # Vaihtoehto 2: Käytä vakiomenetelmää #as_json def as_json(options=()) super(vain: [:nimi]) end end

Sitten meidän tarvitsee vain renderöidä JSON normaalisti (alla oleva esimerkki palauttaa aina JSON:n riippumatta siitä, lähetettiinkö HTML-pyyntö vai ei):

# app/controllers/users_controller.rb-luokan UsersController< ApplicationController def index render json: User.all end end

Huomaa, että sinun ei tarvitse kutsua #to_json-koodia itse, kun käytät #render-toimintoa - se tekee sen puolestasi.

Joskus Heroku saattaa vaatia lisätoimenpiteitä virhesivujesi näyttämiseksi oikein. Katso. Sinun on ehkä ensin poistettava staattiset sivut sovelluksesta/julkisesta hakemistosta.

Suojaus ulkopuolelta

Oletetaan, että haluat sallia API:n käytön vain, jos käyttäjä on kirjautunut sisään. Nykyinen ohjaimesi todennus tekee jo tehtävän – varmista vain, että sinulla on oikea #before_action-joukko (esim. before_action:require_login). Haluat ehkä toiminnon, jossa sekä sisäänkirjautuneet että kirjautumattomat käyttäjät voivat tarkastella sivua, mutta kummankin on nähtävä eri tiedot. Et halua, että kirjautumattomat käyttäjät voivat tehdä API-pyyntöjä arkaluonteisten tietojen hakemiseksi. Samoin et halua sallia luvattomien käyttäjien käydä tietyillä HTML-sivuilla.

Jos haluat käsitellä pyyntöjä muusta kuin selainsovelluksesta (esimerkiksi komentoriviltä), et voi luottaa selaimen evästeisiin todennuksessa. Tästä syystä useimmat API:t käyttävät alkuperäisiä tunnuksia osana todennusprosessia. Puhumme hieman enemmän rahakkeista seuraavalla oppitunnilla.

Seuraavat vaiheet

Sinulla on nyt taidot käyttää Rails-sovellustasi palvelemaan HTML:n lisäksi mitä tahansa muuta muotoa. Jos haluat mennä pidemmälle ja antaa muiden kehittäjien rakentaa asioita alustasi avulla (esimerkiksi jotta he voivat tehdä ohjelmallisia pyyntöjä käyttäjänä todennuksen sijaan), sinun on tehtävä API-järjestelmästäsi paljon turvallisempi. Emme kata kaikkea tässä, mutta tarkista seuraavat:

  • Artikkelissa Awesome Rails API:iden rakentaminen kuvailee monia parhaita tapoja siirtyä lelusovelluksesta alan standardisovellusliittymiin.

Palvelukeskeinen arkkitehtuuri

On aika ottaa käyttöön arkkitehtoninen lähestymistapa nimeltä Service-Oriented Architecture (SOA). Perusideana on, että hakemuksesi koostuu useista palveluista, kuten maksujärjestelmästä, käyttäjärekisteröinnistä, suositusmoduulista jne. Sen sijaan, että rakentaisit kaiken yhden pääsovelluksen sisällä, jaat alijärjestelmät täysin itsenäisiksi osiin, jotka ovat vuorovaikutuksessa toistensa kanssa sisäisten API:iden avulla.

Tämä on hyvä monesta syystä. Varmistamalla, että kaikki sovelluksesi osat eivät välitä muiden osien toiminnasta ja osaavat vain pyytää tietoja API:n kautta, voit tehdä huomattavia muutoksia palvelukoodiin ja muu sovellus toimii entiseen tapaan. Voit korvata yhden palvelun kokonaan toisella, ja niin kauan kuin se kommunikoi samoilla API-menetelmillä, se sujuu erittäin sujuvasti. Voit käyttää ulkoisia sovellusliittymiä osana sovellustasi (kuten maksunkäsittelijöitä) oman kirjoittamisen sijaan. Voit luoda PHP-sovelluksen, joka on vuorovaikutuksessa Python-sovelluksen kanssa, joka on vuorovaikutuksessa Rails-sovelluksen kanssa, ja kaikki toimii, koska ne kommunikoivat keskenään API:n avulla.

Yleensä on hyvä idea yrittää pitää sovelluksesi jokainen osa mahdollisimman itsenäisenä. SOA-konsepti rohkaisee sinua miettimään tarkasti, mitä menetelmiä haluat paljastaa sovelluksesi muille osille, ja näin tekemällä koodisi paranee. Lisäksi olettaen, että sovelluksesi jokainen pääkomponentti on itsenäinen, voit myös eristää ongelmat paljon helpommin ja käsitellä virheitä älykkäämmin.

Palvelukeskeisen arkkitehtuurin käyttäminen koko sovelluksessa on kuin jättimäisen, monimutkaisen Ruby-skriptin hajottamista hienoiksi luokiksi ja menetelmiksi, vain suuremmassa mittakaavassa.

Yksi tunnetuimmista palvelukeskeiseen arkkitehtuuriin siirtymisen tapauksista on Amazon.com. Eräänä päivänä vuonna 2002 Jeff Bezos sanoi suoraan, että kaikkien työryhmien on siirryttävä SOA:han tai heidät erotetaan. Pahamaineinen blogipostaus Googlen työntekijä, joka oli tarkoitettu sisäisiin tarkoituksiin, mutta vahingossa paljastettiin yleisölle, puhui Amazonin voimasta SOA:n avulla. Tämä on hienoa luettavaa, joten muista arvioida se, mutta Bezosin kirjeen pääteesit on otettu seuraavissa lainauksissa viestistä:

1) Kaikki komennot tarjoavat nyt tietonsa ja toiminnallisuutensa palvelurajapintojen kautta.

2) Joukkueiden tulee kommunikoida keskenään näiden rajapintojen kautta.

3) Muut prosessien välisen viestinnän muodot ovat kiellettyjä: ei suoria linkkejä, ei suoraa tietojen lukemista toisesta komennosta, ei jaetun muistin malleja, ei "takaovia" ja vastaavia. Ainoa sallittu tapa kommunikoida on pääsy palvelurajapintaan verkon kautta.

4) Sillä ei ole väliä mitä tekniikkaa he käyttävät. HTTP, Corba, Pubsub, alkuperäiset protokollat ​​- sillä ei ole väliä. Bezos ei välitä.

5) Kaikki palveluliitännät poikkeuksetta on suunniteltava alun perin siten, että niitä voidaan ohjata ulkopuolelta. Eli tiimin on suunniteltava ja suunniteltava voidakseen tarjota käyttöliittymän yrityksen ulkopuolisille kehittäjille. Ei poikkeuksia.

6) Jokainen, joka ei huomioi näitä vaatimuksia, erotetaan.

SOA on vakavaa toimintaa. Toki sitä käytettäessä tulee vastaan ​​monia ongelmia - katso tämä Amazonin "oppitunteja" koskeva viesti - mutta sillä on uskomattoman paljon etuja.

Et luultavasti murehdi liikaa SOA:sta, kun rakennat itsellesi "lelu"-sovelluksia, mutta tämä kysymys tulee varmasti esille, kun aloitat IT-yrityksen palveluksessa, joten siihen tutustuminen on hyvä käytäntö.

Sinun tavoitteesi

  1. Lue Rails Guide to Controllers -oppaan osio 7 saadaksesi lisätietoja JSON- ja XML-renderöimisestä.
  2. Niitä ei vaadita katselemaan (koska ne menevät hieman pidemmälle kuin meillä tällä hetkellä), mutta jos olet kiinnostunut, tutustu Railscasteihin opetusohjelman alareunassa olevan Lisäresurssit-osiossa saadaksesi lisätietoja ohjelman eduista. API.

Johtopäätös

Työskentelemme tiiviimmin sovelluksesi kanssa API:na Javascript-kurssin aikana. Tällä kurssilla luot useita täyden pinon sovelluksia, jotka käyttävät AJAX-kutsuja paremman käyttökokemuksen saavuttamiseksi, mikä tarkoittaa itse asiassa XML- tai JSON-tietojen hahmontamista täyden HTML-sivun sijaan. Seuraavaksi luot useita yksisivuisia Javascript-sovelluksia, jotka käyttävät Rails-sovelluksesi tarjoamaa APIa saadakseen kaikki tarvitsemansa tiedot tietokannasta ja toimivat muuten asiakaspuolella (selaimessa).

Paras tapa käsitellä API:ta on luoda se ja olla vuorovaikutuksessa sen kanssa, mihin keskitymme projekteissamme.

Terveisiä!
Tässä artikkelissa tarkastellaan mitä API on, missä, miten ja mihin sitä käytetään. Katsomme myös, kuinka API:ta voidaan käyttää verkkokehityksessäsi ja miten se voi helpottaa web-ohjelmoijan elämää.

Aloitetaan siis määritelmästä. API (Application Programming Interface) on ohjelmointirajapinta, käyttöliittymä sovellusten luomiseen. Ymmärrettävämmällä kielellä API on valmis koodi, joka yksinkertaistaa ohjelmoijan elämää. API luotiin, jotta ohjelmoija voisi todella helpottaa tämän tai toisen sovelluksen kirjoittamista käyttämällä valmiita koodia (esimerkiksi funktioita). Tunnettu JavaScriptillä kirjoitettu jQuery on myös eräänlainen API. Jos tarkastelemme tätä esimerkkiä, jQuery tekee koodin kirjoittamisesta paljon helpompaa. Mitä voidaan tehdä 30 rivillä tavallisilla JavaScript-työkaluilla, kirjoitetaan jQueryn kautta 5-6. Jos tarkastellaan APIa yleisesti, niin voit löytää paljon palveluita, jotka edustavat kehitysratkaisuja. Tunnetuin nykyään on code.google.com-palvelu, joka tarjoaa noin viisikymmentä erilaista sovellusliittymää! Tämä on käyttöliittymä Android-sovellusten ja erilaisten AJAX-työskentelyyn tarkoitettujen sovellusliittymien luomiseen sekä erilaisia ​​sovellusliittymiä, joita voit helposti mukauttaa haluamallasi tavalla.

Loppujen lopuksi onko järkevää kirjoittaa koodia omin käsin? Miksi työstää sitä, mikä on jo luotu? Onko järkevää kieltäytyä ilmaisista ratkaisuista (ja itse asiassa ilmaisesta avusta) verkkokehityksessä? Jos vastasit "EI" kaikkiin näihin kysymyksiin, luule, että ymmärrät API:n olemuksen.

Mutta haluan myös selventää. Aloittelevien kehittäjien EI tule käyttää puolivalmiita ratkaisuja, koska he eivät selviä todellisesta tehtävästä tulevaisuudessa. Siksi, jos olet aloittelija web-ohjelmoija, älä käytä puolivalmiita tuotteita! Opi ajattelemaan päälläsi, rakentamaan erilaisia ​​algoritmeja ymmärtääksesi ohjelmoinnin olemuksen. Sanon myös jo kaikille puhuttaessa, että API ei ole valmis ratkaisu, se on ympäristö, käyttöliittymä omien projektien luomiseen. Ethän syö pakastelihapullia kaupasta, ethän? Paistat ne ensin, eikö niin? Tämä analogia kuvaa API:n olemuksen erittäin selvästi.

Yleisesti kerroin, mikä API on, missä ja miten sitä käytetään, mikä tärkeintä, mihin. Toivotan sinulle miellyttävää verkko-ohjelmoinnin opiskelua ja sen suurempien syvyyksien ymmärtämistä!

Ei tunnisteita

Tätä artikkelia ei kommentoida, koska sen kirjoittaja ei ole vielä yhteisön täysjäsen. Voit ottaa yhteyttä kirjoittajaan vasta saatuaan

Jaa