Beth yw Gorthreulio?
Ar wreiddyn y rheswm pam mae pobl yn argymell GraphQL ceir cysyniad o'r enw gorthreulio. Mewn llawer o APIs, pan ofynnwch am wrthrych, mae'r API yn dychwelyd popeth y mae'n ei wybod, oherwydd nad yw'n gwybod beth rydych chi'n ei ddiddori ynddo. Mae GraphQL (fel SQL) yn eich galluogi i ddweud wrth yr API yn benodol beth ydych chi'n chwilio amdano cyn iddo wneud y ymholiad.
Mae'n debyg i fynd i mewn i fwyty a gofyn iddynt ddod â phopeth ar y ddeiet i'r bwrdd, ac wedyn dewis eich cychwyn, y prif gwrs, a'r pwdin. Mae'r gweddill yn cael ei wastraffu.
Enghraifft Ymarferol
Ystyriwch ymholiad gan ap llawryddimaginary gweinyddwr:
query foodPricesForOrder {
menuItem(id: "Jxkjahdkfh==") {
id
description
longDescription
calories
price
picture
}
}
Beth pe bai ni wedi gadael longDescription? Byddem yn arbed traffig rhwydwaith, er nad yw ymholiad y cronfa ddata go iawn yn llawer cyflymach os yw'r holl feysydd yn byw yn yr un tabl.
Ond sylwch ar y maes picture — gallai fod yn ddelwedd wedi'i amgodio'n base64. Nid ydym am gael hynny ar ap gweinyddwr llawrydd. Yn REST, ni fyddem â dewis ond derbyn hyn, neu byddai'n rhaid i ddatblygwr yr API greu pwynt terfyn ar wahân ar gyfer delweddau. Yn waeth, mae ateb REST yn gallu gorfodi'r cleient i wneud alwadau ar wahân ar gyfer pob pryd.
Sut mae GraphQL yn Datrys Hyn
Mae GraphQL yn caniatáu i chi ofyn am yr hyn rydych chi ei angen yn unig. Os oes datrysiad wedi'i gysylltu â'r maes picture (yn AppSync, Apollo, neu unrhyw weinydd GraphQL), dim ond pan fydd y maes hwnnw yn ymddangos yn yr ymholiad y caiff ei alw. Cyn belled â'ch nad ydych yn cynnwys ef, nid ydych yn talu amdano.
Mae hyn yn wir ar draws API Legalesign. Dim ond pan fyddwch yn ei ofyn y bydd meysydd sy'n gofyn am chwiliadau costus — gwrthrychau cysylltiedig, gwerthoedd cyfrifiadol, llwythi mawr — yn cael eu datrys.
Yr Hyrwyddiad
Wrth ddylunio eich ymholiadau, meddyliwch am ba feysydd rydych chi'n wir angen. Disgwylwch y bydd popeth nad yw'r UI yn ei ddefnyddio. Byddwch yn lleihau maint y llwyth, hwyrni'r rhwydwaith, a chynhwysiant cyfrifiadurol ar y gweinydd.
Gweler Dylunio Ymholiadau am ragor o ganllawiau ymarferol.