Kuidas oma skeemilt päringuid saada graafilise graafiku fragmentide abil

Selles lühikeses artiklis käsitleme fragmentide kontseptsiooni ja seda, kuidas saate vähendada päringute koodi ja sobitada teie kasutajaliidese täpsed andmevajadused.

Esiteks peame vastama küsimusele, mis on fragment? Fragment on põhimõtteliselt korduvkasutatav päringutükk. GraphQL-is peate sageli küsima samade andmeväljade kohta erinevates päringutes. Nende väljade määratlemiseks vajalik kood tuleb kirjutada mitu korda, mis toob kaasa rohkem vigu. Selle koodi taaskasutamisel saame oma ajaga efektiivsemaks muutuda ja kasutada neid päringuloogika tükke erinevates päringutes. Kuid kuidas saaksime seda kasutada GraphQL-is? Ütleme nii, et tahame kasutada sama päringut nagu selles artiklis varjunimede kohta. Võite alustada selle hoidla kloonimisega

git kloon https://github.com/a7v8x/express-graphql-demo.git -b funktsioon / 4-graphql-varjunimed
Vaadake eelseisvat tasuta GraphQL-i keelekursust brauseri harjutustes
Eelseisvalt GraphQL-i keelekursusest

järgige readme'i, käivitage server ja minge seejärel aadressile / graphiql. Seejärel peaksite saama päringut täita ka siis, kui kasutatakse varjunimede mõistet:

Näeme, et arenguruumi on veel, kuna iga päringu väljad korduvad mitu korda. Kuna need on samad valikukomplektid, saame väljad määratleda vaid korra, et neid vajadusel vastavalt osutada. Selleks võime kasutada fragmenti. Iga fragment koosneb erinevatest osadest. Vaatame seda lihtsa fragmendi näidet:

Iga fragment sisaldab fragmendi nime (userFields), millist tüüpi me seda fragmenti rakendame (User) ja valikukomplekti (id, eesnimi, perekonnanimi, telefon ja kasutajanimi).

Nüüd saame getUsersi päringu ümber kirjutada fragmendi ja hajutatud operaatori abil.

Tulemused on samad, kuid refaktoriseerimise ja koodi taaskasutamise osas on päringute sel viisil kirjutamisel palju eeliseid.

Teist tüüpi fragmendid on nn sisemised fragmendid. See on kasulik päringute korral, mille puhul peame tüübi lahendama käitustõmmisel. Seda kasutatakse siis, kui peame rakendama ühe abstraktse tüübi GraphQL-is: GraphQLUnion või GraphQLInterface. GraphQLInterface'i kõige tavalisem näide on sõlme liides, mida kasutatakse Relay.js-s. GraphQLUnionit kasutatakse tavaliselt otsingu rakendamiseks GraphQL-is. Seda tüüpi päringute tegemisel peame tingimuslikuks täitmiseks kasutama sisemist fragmenti. See päring illustreerib, kuidas see tekstisisene fragment välja näeb:

Tüüptingimused on avaldused kasutaja ja ettevõtte kohta. Tüüptingimustega on meil võimalik skeemis rakendada iga fragmenti erinevat tüüpi isegi siis, kui mõlemal tüübil Kasutaja ja Ettevõte on erinevad väljad.

Muudel juhtudel kasutatakse fragmente sageli ka esiservade vahemällu salvestamise klientides, näiteks relees või apollos. Relee jaoks on meil nn fragmentide konteiner, mis määratleb komponendi komponendi andmenõuded. Apollo-kliendis kasutame fragmentide mõistet niinimetatud päringute kollokatsioonil. Nende vahemällu salvestatud klientide killud sobivad põhimõtteliselt ideaalselt kasutajaliidese komponentide andmevajadustega. Seda saab meie eeliseks kasutada staatiliseks tippimiseks voolu või masinakirjaga. Saame genereerida voo- või masinkirjelduse definitsioonid oma GraphQL-i skeemilt ja kasutada neid määratlusi meie kasutajaliidese komponendi tugiteenuse tüübi määratlusena. Üks parimatest vahenditest selle jaoks on apollo codegen.

Kas teile meeldis see postitus? Seejärel plaksutage selle artikli kallal, kuna see muudab teiste leidmise hõlpsamaks. Selle Githubi haru kaudu saab kloonida näidete ja projekti seadistusega hoidla. Eelseisvale tasuta GraphQL-i kursusele pääsete varakult, tellides saidil graphqlmastery.com.