Постоје многи архитектонски стандарди отвореног кода за прављење и дистрибуцију апликација. РЕСТ (Репресентатионал Стате Трансфер), СОАП (Симпле Објецт Аццесс Протоцол), РПЦ (Ремоте Процедурал Цалл) и ГрапхКЛ АПИ-ји су најпопуларнији.
РЕСТфул АПИ-ји су најчешће коришћени АПИ архитектонски стандард. Ако сте написали сложене РЕСТфул АПИ-је са много крајњих тачака, вероватно сте схватили колико они могу бити компликовани. Ово је посебно тачно ако постоје само мале разлике између крајњих тачака.
Такође можете наићи на проблеме са преузимањем података јер РЕСТфул АПИ-ји нису довољно флексибилни да изаберу одређене податке. ГрапхКЛ решава ове проблеме РЕСТфул АПИ-ја.
Шта је ГрапхКЛ?
ГрапхКЛ (Грапх Куери Лангуаге) је језик упита и време извођења за прављење АПИ-ја. За разлику од РЕСТ АПИ-ја са много крајњих тачака за потрошњу података, ГрапхКЛ АПИ-ји имају једну улазну тачку. Можете преузети одређене податке тако што ћете их описати у упитима.
Тхе ГрапхКЛ спецификација дефинише језик упита и начин рада ГрапхКЛ сервера. Можете да правите и користите ГрапхКЛ АПИ-је на језицима на страни сервера од Питхон-а до
Јавасцрипти било који језик који подржава ХТТП.Мета је направио ГрапхКЛ 2012. године као алтернативу РЕСТ-у за изградњу на ХТТП-у. Објавили су ГрапхКЛ као стандард отвореног кода 2015. Данас, ГрапхКЛ фондација надгледа развој ГрапхКЛ спецификације.
ГрапхКЛ је прилично нов, са мало усвајања, и постоје скривени трошкови за његово коришћење. Изградња ГрапхКЛ АПИ-ја може бити непотребно сложена, посебно за мале пројекте са неколико крајњих тачака.
Такође, сви ГрапхКЛ захтеви на крају враћају статусни код 200 без обзира на стање захтева.
Како функционише ГрапхКЛ?
за разлику од РЕСТ, који је оријентисан на ресурсе, ГрапхКЛ захтева да о подацима размишљате као о графикону за интеракцију са подацима. Можете одредити структуру података, а спецификација пружа робустан интерфејс упита за интеракцију са АПИ-јем преко ХТТП-а. Моћи ћете да користите различите функције у зависности од ГрапхКЛ пакет или библиотека одлучите да користите.
ГрапхКЛ шеме укључују типове објеката који дефинишу захтевни објекат и његова доступна поља. На упитима и мутацијама АПИ-ја, ГрапхКЛ пакет потврђује упите и извршава упите на основу наведених функција руковања (разређивача).
Зашто би требало да користите ГрапхКЛ?
РЕСТ је стандард који се лако користи, а већина програмских језика има алате за брзу прављење РЕСТфул АПИ-ја. Међутим, постоји много проблема са прављењем и употребом РЕСТфул АПИ-ја.
Ево неких проблема са РЕСТ-ом због којих програмери преферирају ГрапхКЛ за неке случајеве употребе.
Неефикасно преузимање података
РЕСТфул АПИ-ји преносе податке на основу спецификације крајње тачке. Нису довољно флексибилни да би преузели податке изван онога што је тешко кодирано у функцији руковања крајње тачке.
Претпоставимо да крајња тачка враћа листу података о позиву, а ви морате да наведете вредности или критеријуме за поља. У том случају, програмер мора да креира крајњу тачку и дефинише пословну логику за враћање података. Можете рашчланити вредан ресурс ручно, што на крају одузима више времена.
ГрапхКЛ решава проблем неефикасног преузимања података јер можете флексибилно да питате АПИ-је да бисте вратили податке на основу критеријума и спецификација.
ГрапхКЛ АПИ-ји су интерактивни; можете одредити податке које требате да преузмете у лакој, читљивој синтакси.
{
корисник (где: {аге: {_ек: "89"}}) {
име
школа(где: {жив: {_ек: истина}}) {
био
националности
}
}
}
ГрапхКЛ упит изнад упита а корисник шема за уносе где је старости поље је 89. Упит има уграђени упит за уносе где је жив терен оцењује истина. Враћа поља имена, биографије и националности из шеме.
Спееди Девелопмент
Прављење и коришћење ГрапхКЛ АПИ-ја је лакше него коришћење РЕСТ-а, посебно како се величина пројекта повећава. Током фазе развоја, не морате да развијате онолико рута и функција руковања колико ћете када развијате РЕСТфул АПИ-је. Коришћење ГрапхКЛ АПИ-ја није тако заморно као РЕСТфул АПИ-ји.
У РЕСТ-у различите крајње тачке дају приступ различитим ресурсима, за разлику од ГрапхКЛ-а, где постоји једна крајња тачка. Ово даје флексибилност и перформансе, а упити могу позвати различите функције решавања.
Језик дефиниције ГрапхКЛ шеме
ГрапхКЛ Сцхема Дефинитион Лангуаге (СДЛ) специфицира шеме за ГрапхКЛ услуге.
ГрапхКЛ СДЛ синтакса је лака за читање и разумевање. Навести ћете структуру своје шеме у датотеци са .грапхкл или .грапхклс проширење.
тип људски {
име: Низ!
старост: Инт!
}унос АддХуман {
име: Низ!
старост: Инт!
}тип мутација {
ЦреатеХуман (инпут: АддХуман!): Хуман!
ДелетеХуман (ид: Инт!): Низ!
УпдатеХуман (ид: Инт!): Низ!
}
тип упит {
ГетХуман (ид: Инт!): Хуман!
ГетХуманс: [човек!]!
}
ГрапхКЛ код изнад је шема за ГрапхКЛ АПИ која дефинише структуру АПИ-ја за захтеве. Шема дефинише ЦРУД функционалност за АПИ.
На страни клијента, на основу структуре шеме и клијентових података или операције, клијент може да изврши упит (ГЕТ или ДЕЛЕТЕ у РЕСТ) или а мутација (ПУТ или ПОСТ).
Ево примера упита за Хуман шема.
куери Хуман {
име
старости
}
Горњи упит би вратио људске шеме име и старости теренски подаци.
ГрапхКЛ мутације имају прилично другачију синтаксу за разлику од упита. Ево примера операције мутације на Хуман шема.
мутација {
ЦреатеХуман (инпут:{ наме:"човек", старост: 1000000000000000,}) {
име
старости
}
}
Код мутације улази име и старости поља клијенту и враћа податке из поља.
Требаће вам складиште података за постојаност када правите свој ГрапхКЛ АПИ. Као и РЕСТ и већина веб архитектуре засноване на ХТТП-у, ГрапхКЛ је без стања и можете да користите било које складиште података или базу података за своју апликацију.
Изградња ГрапхКЛ АПИ-ја
ГрапхКЛ је спецификација и можете да направите ГрапхКЛ на најпопуларнијим језицима на страни сервера. Мораћете да пронађете библиотеку са функцијама које су вам потребне за ваш пројекат.
Када бирате ГрапхКЛ библиотеку, желите да користите библиотеку богату функцијама која подржава све ГрапхКЛ типове и операције. Већина библиотека користи приступ на првом месту схеме или код. У првом, ви дефинишете ГрапхКЛ шему, а библиотека генерише резолвере и шаблонски код. За ово друго, чврсто кодирате резолвере без дефинисања шеме.
ГрапхКЛ добија на усвајању
Од почетка ГрапхКЛ-а, програмери и компаније су објавили алате за поједностављење његове употребе. Ово може смањити време развоја за мање и средње пројекте.
Можете да погледате ГрапхКЛ клијенте отвореног кода, ГрапхКЛ документацију и његове спецификације да бисте сазнали више.