РЕСТ АПИ

РЕСТ АПИ вс ГрапхКЛ

РЕСТ АПИ вс ГрапхКЛ

ТЛ; ДР верзија

У једном од претходних постова, укратко смо разговарали о томе како је користити ГитХуб АПИ в3. Ова верзија је дизајнирана за међусобно повезивање као и било који други РЕСТ АПИ. Постоје крајње тачке за сваки ресурс којем требате приступити и / или изменити га. Постоје крајње тачке за сваког корисника, сваку организацију, свако спремиште и тако даље. На пример, сваки корисник има своју АПИ крајњу тачку на хттпс: // апи.гитхуб.цом / усерс / можете покушати да замените своје корисничко име уместо и унесите УРЛ у прегледач да бисте видели са чиме АПИ одговара.

ГитХуб АПИ в4, с друге стране, користи ГрапхКЛ где КЛ представља Куери Лангуаге. ГрапхКЛ је нови начин дизајнирања ваших АПИ-ја. Баш као што постоји много веб услуга које се нуде као РЕСТ АПИ-ји, не само оне које нуди ГитХуб, тако постоји много веб услуга које вам омогућавају да са њима повежете путем ГрапхКЛ.

Најјача разлика коју ћете приметити између ГрапхКЛ-а и РЕСТ АПИ-ја је та што ГрапхКЛ може радити на једној АПИ-јевој крајњој тачки. У случају ГитХуб АПИ в4, ова крајња тачка је хттпс: // апи.гитхуб.цом / грапхкл и то је то. Не морате да бринете о додавању дугих низова на крају основног УРИ-ја или давању додатних параметара низа упита за додатне информације. Једноставно шаљете аргумент попут ЈСОН-а овом АПИ-ју, тражећи само оно што вам треба, и добићете ЈСОН корисни терет са потпуно истим информацијама које сте тражили. Не морате да се бавите филтрирањем нежељених информација или патите од режијских трошкова због великих одговора.

Шта је РЕСТ АПИ?

Па, РЕСТ је скраћеница за Репрезентативни државни пренос, а АПИ скраћеница од Апплицатион Программинг Интерфаце (Интерфејс програмског програмирања). РЕСТ АПИ или „РЕСТфул“ АПИ постао је главна филозофија дизајна иза већине модерних клијент-сервер апликација. Идеја произлази из потребе за одвајањем различитих компоненти апликације попут корисничког интерфејса на страни клијента и логике на страни сервера.

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

РЕСТ дефинише скуп ограничења између клијента и сервера, а комуникација се може догодити само под тим ограничењима. На пример, РЕСТ преко ХТТП-а обично користи модел ЦРУД, што је скраћеница за Стварање, читање, ажурирање и брисање, а ХТТП методе попут ПОСТ, ГЕТ, ПУТ и ДЕЛЕТЕ помажу вам да сами извршите те операције и те операције. Старе технике упада као што су СКЛ ињекције нису могућност са нечим попут чврсто написаног РЕСТ АПИ-ја (иако РЕСТ није сигурносна панацеја).

Такође доста помаже програмерима корисничког интерфејса! Будући да све што примите од ХТТП захтева типично је ток текста (понекад форматиран као ЈСОН), лако можете применити веб страницу за прегледаче или апликацију (на вашем жељеном језику), без бриге о архитектури на страни сервера. Прочитали сте АПИ документацију за услуге попут Реддит-а, Твиттер-а или Фацебоок-а и можете писати екстензије за њих или независне клијенте на језику по вашем избору, јер вам је загарантовано да ће понашање АПИ-ја и даље бити исто.

Супротно томе, сервера не занима да ли је фронт-енд написан у Го, Руби или Питхон. Било да се ради о прегледачу, апликацији или ЦЛИ-у. Само „види“ захтев и одговара на одговарајући начин.

Шта је ГрапхКЛ?

Као и било шта у свету рачунара, РЕСТ АПИ-ји су постали већи и сложенији, а истовремено су људи желели да их имплементирају и троше на бржи и једноставнији начин. Због тога је Фацебоок дошао на идеју ГрапхКЛ-а и касније је отворио. КЛ у ГрапхКЛ-у је скраћеница од Куери Лангуаге.

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

Погледајте овај РЕСТ захтев и његов одговарајући одговор. Овај захтев је намењен само јавној биографији корисника.

Захтев: ГЕТ хттпс: // апи.гитхуб.цом / усерс /
Одговор:

"логин": "октобар",
„ид“: 583231,
"ноде_ид": "МДК6ВКСНлцјУ4МзИзМК ==",
"аватар_урл": "хттпс: // аватарс3.гитхубусерцонтент.цом / у / 583231?в = 4 ",
"граватар_ид": "",
"урл": "хттпс: // апи.гитхуб.цом / усерс / оцтоцат ",
"хтмл_урл": "хттпс: // гитхуб.цом / октобар ",
"фолловерс_урл": "хттпс: // апи.гитхуб.цом / усерс / оцтоцат / фолловерс ",
"фолловинг_урл": "хттпс: // апи.гитхуб.цом / усерс / оцтоцат / фолловинг / отхер_усер ",
"гистс_урл": "хттпс: // апи.гитхуб.цом / усерс / оцтоцат / гистс / гист_ид ",
"старред_урл": "хттпс: // апи.гитхуб.цом / усерс / оцтоцат / старред / овнер / репо ",
"субсцриптион_урл": "хттпс: // апи.гитхуб.цом / усерс / оцтоцат / субсцриптион ",
"организатион_урл": "хттпс: // апи.гитхуб.цом / усерс / оцтоцат / оргс ",
"репос_урл": "хттпс: // апи.гитхуб.цом / усерс / оцтоцат / репос ",
"евентс_урл": "хттпс: // апи.гитхуб.цом / усерс / оцтоцат / евентс / приваци ",
"рецеивед_евентс_урл": "хттпс: // апи.гитхуб.цом / усерс / оцтоцат / рецеивед_евентс ",
"типе": "Корисник",
"сите_админ": нетачно,
"наме": "Октокат",
"цомпани": "ГитХуб",
"блог": "хттп: // ввв.гитхуб.цом / блог ",
"лоцатион": "Сан Франциско",
"емаил": нулл,
„хиреабле“: нулл,
„био“: нулл,
"публиц_репос": 8,
"публиц_гистс": 8,
„следбеници“: 2455,
„следећи“: 9,
"цреатед_ат": "2011-01-25Т18: 44: 36З",
"упдатед_ат": "2018-11-22Т16: 00: 23З"

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

Такође и структура одговора није нешто што претходно знате. Овај ЈСОН одговор је еквивалентан речничком објекту у Питхону или објекту у ЈаваСцрипт-у. Остале крајње тачке ће одговорити ЈСОН објектима који се могу састојати од угнежђених објеката, угнежђене листе унутар објекта или било које произвољне комбинације ЈСОН типова података, а ви ћете морати да упутите документацију да бисте добили детаље. Када обрађујете захтев, морате бити упознати са овим форматом који се мења од крајње тачке до крајње тачке.

ГрапхКЛ се не ослања на ХТТП глаголе попут ПОСТ, ГЕТ, ПУТ и ДЕЛЕТЕ за извођење ЦРУД операција на серверу. Уместо тога, постоји само један тип ХТТП типа захтева и ендопинт за све операције повезане са ЦРУД-ом. У случају ГитХуб-а, ово укључује захтеве типа ПОСТ са само једном крајњом тачком хттпс: // апи.гитхуб.цом / грапхкл

Будући да је ПОСТ захтев, са собом може носити текст попут ЈСОН-а кроз који ће бити наше ГрапхКЛ операције. Ове операције могу бити типаа упит ако све што жели јесте да прочита неке информације или то може бити мутација у случају да податке треба модификовати.

Да бисте упутили АПИ за ГрапхКЛ позиве, можете користити ГитХуб-ов ГрапхКЛ Екплорер. Погледајте овај ГрапхКЛ упит да бисмо преузели исту врсту података (јавна биографија корисника) као што смо то урадили горе користећи РЕСТ.

Захтев: ПОСТ хттпс: // апи.гитхуб.цом / грапхкл
упит
корисник (пријава: "ранво")
био


 
Одговор:
 

"подаци":
"корисник":
"био": "Љубитељи технике и науке. Бавим се свим врстама неповезаних ствари из
сервери за квантну физику.\ р \ нПовремено пишем постове на блогу о горе наведеним интересовањима."


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

Са друге стране, ГрапхКЛ вам такође омогућава да поднесете један захтев и извучете информације које би вам узеле више захтева у традиционалном РЕСТ АПИ-ју. Подсетимо се да су сви ГрапхКЛ захтеви упућени само на једну АПИ крајњу тачку. Узмимо за пример случај коришћења где треба да затражите од ГитХуб АПИ сервера биографију корисника и један од његових ССХ кључева. Била би потребна два ГЕТ захтева.

ОСТАЛИ захтеви: ГЕТ хттпс: // апи.гитхуб.цом //
ГЕТ хттпс: // апи.гитхуб.цом // тастери
 
Захтев за ГрапхКЛ: ПОСТ хттпс: // апи.гитхуб.цом / грапхкл /
 
упит
корисник (пријава: "ранво")
био
публицКеис (задњи: 1)
ивице
ноде
кључ





 
Одговор ГрапхКЛ-а:
 

"подаци":
"корисник":
"био": "Љубитељи технике и науке. Бавим се свим врстама неповезаних ствари из
сервери за квантну физику.\ р \ нПовремено пишем постове на блогу о горе наведеним интересовањима.",
"публицКеис":
"ивице": [

"чвор":
"кеи": "ссх-ед25519 ААААЦ3НзаЦ1лЗДИ1НТЕ5ААААИХ31мВјРИдзех8оД8јваФпРуИгЛ65СвИЛиКпеГБУНГОТ"


]



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

Закључак

ГрапхКЛ долази са сопственом кривом учења, која је врло стрма или уопште није стрма, у зависности од тога кога питате. Са објективног становишта, могу да вам представим следеће чињенице. Флексибилан је као што сте видели горе, интроспективан је - то јест, можете питати ГрапхКЛ АПИ о самом АПИ-ју. Чак и ако нећете да градите свој АПИ сервер користећи га, шансе су да ћете морати да се повежете са АПИ-јем који омогућава само ГрапхКЛ.

Овде можете сазнати нешто више о њеним техничким карактеристикама, а ако желите да упућујете ГрапхКЛ АПИ позиве са своје локалне радне станице, онда користите Грапхикл.

ХД Ремастеред игре за Линук које никада раније нису имале Линук издање
Многи програмери и издавачи игара долазе са ХД ремастером старих игара како би продужили живот франшизе, молимо обожаваоце да захтевају компатибилност...
Како користити АутоКеи за аутоматизацију Линук игара
АутоКеи је услужни програм за аутоматизацију радне површине за Линук и Кс11, програмиран на Питхон 3, ГТК и Кт. Користећи његову скриптну и МАЦРО функ...
Како приказати бројач ФПС-а у Линук играма
Линук гаминг добио је велики потицај када је Валве најавио Линук подршку за Стеам клијент и њихове игре 2012. године. Од тада су многе ААА и индие игр...