Kas yra API? Prašau anglų kalba.

Kol neišmokau programinės įrangos kūrimo, API skambėjo kaip savotiškas alus.

Šiandien šį terminą vartoju taip dažnai, kad iš tikrųjų neseniai bandžiau užsisakyti API bare.

Barmeno atsakymas buvo mesti 404: šaltinis nerastas.

Sutinku daugybę žmonių, tiek dirbančių technologijų srityje, tiek kitur, kurie gana miglotai ar neteisingai įsivaizduoja, ką reiškia šis gana įprastas terminas.

Techniškai API reiškia „ Application Programming Interface“ . Vienu ar kitu metu dauguma didelių kompanijų sukūrė savo klientams arba vidiniam naudojimui skirtas API.

Bet kaip paaiškinti API paprasta anglų kalba? Ir ar yra platesnė prasmė nei ta, kuri naudojama plėtrai ir verslui? Pirmiausia patraukime atgal ir pažiūrėkime, kaip veikia pats internetas.

WWW ir nuotoliniai serveriai

Galvodamas apie internetą, įsivaizduoju didelį prijungtų serverių tinklą .

Kiekvienas interneto puslapis yra saugomas kažkur nuotoliniame serveryje. Nuotolinis serveris juk nėra toks mistiškas - tai tik nuotolinio kompiuterio dalis, optimizuota užklausoms apdoroti.

Norėdami įdėti dalykų perspektyvos, jūs galite nugara sukurti serverį ant jūsų nešiojamas pajėgi aptarnauti visą svetainę į Web (iš tiesų, vietos serveris yra tai, ką inžinieriai naudoti prieš paskelbiant juos visuomenei kurti svetaines).

Kai į savo naršyklę įvedate www.facebook.com, užklausa perduodama „Facebook“ nuotoliniam serveriui. Kai jūsų naršyklė gauna atsakymą, ji interpretuoja kodą ir rodo puslapį.

Naršyklėje, dar vadinamoje klientu , „Facebook“ serveris yra API. Tai reiškia, kad kiekvieną kartą, kai lankotės žiniatinklio puslapyje, sąveikaujate su kurio nors nuotolinio serverio API.

API nėra tas pats, kas nuotolinis serveris - greičiau serverio dalis, kuri gauna užklausas ir siunčia atsakymus .

API kaip būdas aptarnauti savo klientus

Jūs tikriausiai girdėjote apie įmones, kurios pakuoja API kaip produktus. Pavyzdžiui, „Weather Underground“ parduoda prieigą prie savo orų duomenų API.

Scenarijaus pavyzdys: jūsų smulkaus verslo svetainėje yra forma, naudojama klientams pasirašyti susitikimams. Jūs norite suteikti savo klientams galimybę automatiškai sukurti „Google“ kalendoriaus įvykį su išsamia informacija apie šį susitikimą.

API naudojimas: idėja yra tai, kad jūsų svetainės serveris kalbėtų tiesiai su „Google“ serveriu su prašymu sukurti įvykį su nurodyta informacija. Tuomet jūsų serveris gaus „Google“ atsakymą, jį apdoros ir išsiųs atitinkamą informaciją naršyklei, pavyzdžiui, patvirtinimo pranešimą vartotojui.

Arba jūsų naršyklė dažnai gali siųsti API užklausą tiesiai į „Google“ serverį aplenkdama jūsų serverį.

Kuo ši „Google“ kalendoriaus API skiriasi nuo bet kurio kito ten esančio nuotolinio serverio API?

Technine prasme skirtumas yra užklausos ir atsakymo formatas.

Norėdami pateikti visą tinklalapį, jūsų naršyklė tikisi atsakymo HTML, kuriame yra pateikimo kodas, o „Google“ kalendoriaus API skambutis tiesiog grąžins duomenis - greičiausiai tokiu formatu, kaip JSON .

Jei jūsų svetainės serveris teikia API užklausą, tada jūsų svetainės serveris yra klientas (panašiai kaip jūsų naršyklė yra klientas, kai naudojate ją naršydami į svetainę).

Žiūrint iš jūsų vartotojų perspektyvos, API leidžia jiems atlikti veiksmą neišeinant iš jūsų svetainės.

Dauguma šiuolaikinių svetainių naudoja bent kai kurias trečiųjų šalių API.

Daugelį problemų jau turi trečiosios šalies sprendimas, ar tai būtų biblioteka, ar paslauga. Dažnai tiesiog paprasčiau ir patikimiau naudoti esamą sprendimą.

Neretai kūrėjų komandos suskirsto savo programas į kelis serverius, kurie tarpusavyje kalba per API. Serveriai, atliekantys pagrindinio programų serverio pagalbines funkcijas, paprastai vadinami mikropaslaugomis .

Apibendrinant galima pasakyti, kad kai įmonė siūlo API savo klientams, tai tiesiog reiškia, kad jie sukūrė tam skirtų URL rinkinį, kuris pateikia grynus duomenų atsakymus - tai reiškia, kad atsakymuose nebus tokios pristatymo pridėtinės sumos, kokios galėtumėte tikėtis grafinę vartotojo sąsają, pvz., svetainę .

Ar galite pateikti šias užklausas naudodami savo naršyklę? Dažnai taip. Kadangi tikrasis HTTP perdavimas vyksta tekstu, jūsų naršyklė visada padarys viską, ką gali, kad būtų pateiktas atsakymas.

Pavyzdžiui, galite tiesiogiai pasiekti „GitHub“ API naudodami savo naršyklę, net nereikia prieigos prieigos rakto. Štai JSON atsakymas, kurį gaunate apsilankę „GitHub“ vartotojo API maršrute savo naršyklėje (//api.github.com/users/petrgazarov):

{ "login": "petrgazarov", "id": 5581195, "avatar_url": "//avatars.githubusercontent.com/u/5581195?v=3", "gravatar_id": "", "url": "//api.github.com/users/petrgazarov", "html_url": "//github.com/petrgazarov", "followers_url": "//api.github.com/users/petrgazarov/followers", "following_url": "//api.github.com/users/petrgazarov/following{/other_user}", "gists_url": "//api.github.com/users/petrgazarov/gists{/gist_id}", "starred_url": "//api.github.com/users/petrgazarov/starred{/owner}{/repo}", "subscriptions_url": "//api.github.com/users/petrgazarov/subscriptions", "organizations_url": "//api.github.com/users/petrgazarov/orgs", "repos_url": "//api.github.com/users/petrgazarov/repos", "events_url": "//api.github.com/users/petrgazarov/events{/privacy}", "received_events_url": "//api.github.com/users/petrgazarov/received_events", "type": "User", "site_admin": false, "name": "Petr Gazarov", "company": "PolicyGenius", "blog": "//petrgazarov.com/", "location": "NYC", "email": "[email protected]", "hireable": null, "bio": null, "public_repos": 23, "public_gists": 0, "followers": 7, "following": 14, "created_at": "2013-10-01T00:33:23Z", "updated_at": "2016-08-02T05:44:01Z"}

Atrodo, kad naršyklė puikiai pasirodė pateikdama JSON atsakymą. Toks JSON atsakymas yra paruoštas naudoti jūsų kode. Iš šio teksto lengva išgauti duomenis. Tada su duomenimis galite daryti ką tik norite.

A skirtas „taikymui“

Uždarykime dar keletą API pavyzdžių.

„Paraiška“ gali būti susijusi su daugeliu dalykų. Štai keletas jų API kontekste:

  1. Programinė įranga, turinti aiškią funkciją.
  2. Visas serveris, visa programa arba tik nedidelė programos dalis.

Basically any piece of software that can be distinctively separated from its environment, can be an “A” in API, and will probably also have some sort of API.

Let’s say you’re using a third-party library in your code. Once incorporated into your code, a library becomes part of your overall app. Being a distinct piece of software, the library would likely have an API which allows it to interact with the rest of your code.

Here’s another example: In Object Oriented Design, code is organized into objects. Your application may have hundreds of objects defined that can interact with one another.

Each object has an API — a set of public methods and properties that it uses to interact with other objects in your application.

Objektas taip pat gali turėti vidinę logiką, kuri yra privati, tai reiškia, kad ji yrapaslėptaiš išorės srities (ir ne API).

Iš to, ką aptarėme, tikiuosi, kad atimsite platesnę API reikšmę ir šiandien dažniausiai vartojamus terminus.

Įdomūs šaltiniai (dalykai, kuriuos palikau, bet vis dar labai šaunūs):

Puikus „YouTube“ vaizdo įrašas apie DNS (domenų vardų sistemą)

HTTP protokolo pagrindai

Nuostabus Khano akademijos vaizdo įrašas apie objekto projektavimo principus