Шта је АПИ? На енглеском, молим.

Пре него што сам научио развој софтвера, АПИ је звучао као нека врста пива.

Данас тај термин користим толико често да сам заправо недавно покушао да наручим АПИ у бару.

Бармен је одговорио да баци 404: ресурс није пронађен.

Упознајем пуно људи, како оних који раде у техници, тако и другде, који имају прилично нејасну или нетачну представу о томе шта значи овај прилично уобичајени израз.

Технички, АПИ је скраћеница од Апплицатион Программинг Интерфаце . У неком тренутку, већина великих компанија изградила је АПИ-је за своје купце или за интерну употребу.

Али како објаснити АПИ на обичном енглеском? А да ли постоји шире значење од оног које се користи у развоју и пословању? Прво, повуцимо се уназад и погледајмо како сам веб функционише.

ВВВ и удаљени сервери

Кад размишљам о Вебу, замишљам велику мрежу повезаних сервера.

Свака страница на Интернету чува се негде на удаљеном серверу. Удаљени сервер ипак није толико мистичан - то је само део удаљеног рачунара који је оптимизован за обраду захтева.

Да бисте ствари ставили у перспективу, можете да завртите сервер на свом преносном рачунару који може да опслужује целу веб локацију на мрежи (у ствари, локални сервер је оно што инжењери користе за израду веб страница пре него што их пусте у јавност).

Када у прегледач унесете ввв.фацебоок.цом, захтев се шаље на Фацебоок-ов удаљени сервер. Када прегледач прими одговор, он тумачи код и приказује страницу.

За прегледач, такође познат и као клијент , Фацебоок сервер је АПИ. То значи да сваки пут када посетите страницу на Вебу, комуницирате са АПИ-јем неког удаљеног сервера.

АПИ није исто што и удаљени сервер - он је део сервера који прима захтеве и шаље одговоре .

АПИ-ји као начин да услужите своје купце

Вероватно сте чули за компаније које АПИ-је пакују као производе. На пример, Веатхер Ундергроунд продаје приступ свом АПИ-ју за временске податке.

Пример сценарија: Веб локација вашег малог предузећа има образац који се користи за пријављивање клијената на састанке. Желите да својим клијентима дате могућност да аутоматски креирају догађај Гоогле календара са детаљима за тај састанак.

Употреба АПИ-ја: Идеја је да сервер ваше веб странице разговара директно са Гоогле-овим сервером са захтевом да креира догађај са датим детаљима. Тада би ваш сервер примио Гоогле-ов одговор, обрадио би га и прегледачу послао релевантне информације, попут поруке о потврди кориснику.

Алтернативно, ваш прегледач често може да пошаље АПИ захтев директно на Гоогле-ов сервер заобилазећи ваш сервер.

По чему се АПИ овог Гоогле календара разликује од АПИ-ја било ког другог удаљеног сервера?

У техничком смислу , разлика је у формату захтева и одговора.

Да би приказао целу веб страницу, прегледач очекује одговор у ХТМЛ-у који садржи презентацијски код, док АПИ позив Гоогле календара само враћа податке - вероватно у формату попут ЈСОН-а .

Ако сервер ваше веб локације даје АПИ захтев, онда је сервер ваше веб странице клијент (слично као што је ваш прегледач клијент када га користите за навигацију до веб локације).

Из перспективе ваших корисника, АПИ-ји им омогућавају да доврше радњу без напуштања ваше веб локације.

Већина модерних веб локација користи барем неке независне АПИ-је.

Многи проблеми већ имају решење треће стране, било у облику библиотеке или услуге. Често је једноставно и поузданије користити постојеће решење.

Није реткост да развојни тимови разграђују своје апликације на више сервера који међусобно разговарају путем АПИ-ја. Сервери који изводе помоћне функције за главни сервер апликација обично се називају микросервисима .

Да резимирамо, када компанија нуди АПИ својим купцима, то само значи да су изградили скуп наменских УРЛ-ова који враћају чисте одговоре података - што значи да одговори неће садржати врсту презентационих трошкова које бисте очекивали у графички кориснички интерфејс попут веб странице .

Можете ли да упутите ове захтеве помоћу прегледача? Често, да. Будући да се стварни ХТТП пренос одвија у тексту, прегледач ће увек учинити најбоље што може да прикаже одговор.

На пример, АПИ-ју ГитХуб можете приступити директно са прегледачем, чак и без потребе за приступним токеном. Ево ЈСОН одговора који добијете када посетите АПИ руту ГитХуб корисника у свом прегледачу (//апи.гитхуб.цом/усерс/петргазаров):

{ "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"}

Чини се да је прегледач сасвим добро приказао ЈСОН одговор. Овакав ЈСОН одговор спреман је за употребу у вашем коду. Из овог текста је лако извући податке. Тада са подацима можете да радите шта год желите.

А је за „Апликацију“

Да затворимо, убацимо још неколико примера АПИ-ја.

„Пријава“ се може односити на многе ствари. Ево неких од њих у контексту АПИ-ја:

  1. Комад софтвера са посебном функцијом.
  2. Читав сервер, цела апликација или само мали део апликације.

У основи, сваки део софтвера који се може јасно одвојити од свог окружења, може бити „А“ у АПИ-ју и вероватно ће имати и неку врсту АПИ-ја.

Рецимо да у коду користите библиотеку треће стране. Једном уграђена у ваш код, библиотека постаје део ваше целокупне апликације. Будући да је засебан софтвер, библиотека би вероватно имала АПИ који јој омогућава интеракцију са остатком вашег кода.

Ево још једног примера: У објектно оријентисаном дизајну код је организован у објекте. Ваша апликација може имати дефинисане стотине објеката који могу међусобно да комуницирају.

Сваки објекат има АПИ - скуп јавних метода и својстава које користи за интеракцију са другим објектима у вашој апликацији.

Предмет такође може имати унутрашњу логику која је приватна, што значи да јестесакривениз спољног опсега (а не АПИ).

Из онога што смо покрили, надам се да ћете уклонити шире значење АПИ-ја као и уобичајену употребу термина данас.

Занимљиви ресурси (ствари које сам изоставио, али су и даље врло кул):

Сјајан иоутубе видео на ДНС-у (систем имена домена)

Основе ХТТП протокола

Авесоме Кхан Ацадеми видео о објектно оријентисаним принципима дизајна