GraphQL-i õpetus algajatele: mis on, funktsioonid ja näide
Mis on GraphQL?
GraphQL on rakenduskihi serveripoolne tehnoloogia, mille Facebook on välja töötanud olemasolevate andmetega päringute tegemiseks. GraphQL saab optimeerida RESTful API-kõnesid. See annab deklaratiivse viisi teie andmete toomiseks ja värskendamiseks. GraphQL aitab teil andmeid serverist kliendile laadida. See võimaldab programmeerijatel valida, millist tüüpi päringuid neile meeldib teha.
Miks kasutada GraphQL-i?
GraphQL-i kasutamise põhjused on järgmised:
- See pakub inimesele loetava päringu.
- GraphQL-is on paljude andmebaasidega väga lihtne tegeleda.
- See sobib mikroteenuste ja keerukate süsteemide jaoks.
- Saate andmeid tuua ühe API-kõnega.
- See aitab teil päringute pakkimist ja vahemällu salvestada.
- Te ei pea probleemidega silmitsi, üle ega alla tõmbama.
- Taotluste kohandamine vastavalt teie vajadustele.
- See aitab teil leida sobivas vormingus skeemi.
- GraphQL hoiab dokumentatsiooni automaatselt API muudatustega sünkroonis.
- API arendamine on võimalik ilma versioonita.
- GraphQL-i välju kasutatakse mitmes päringus, mida saab taaskasutamiseks jagada kõrgema komponendi tasemel.
- Saate valida, milliseid funktsioone kuvada ja kuidas need töötavad.
- Seda saab kasutada rakenduste kiireks prototüüpimiseks.
GraphQL-i rakendused
Siin on GraphQL-i olulised rakendused:
- See pakub relee ja muid kliendiraamistikke
- GraphQL aitab teil mobiilirakenduse jõudlust parandada.
- See võib vähendada ülelaadimisprobleemi, vähendades serveripoolset pilveteenust ja vähendades kliendipoolset võrgukasutust.
- Seda saab kasutada siis, kui klientrakendus peab pika päringuvormingus määrama, milliseid välju on vaja.
- GraphQL-i saab täielikult kasutada, kui peate oma vanale või olemasolevale API-le funktsioone lisama.
- Seda kasutatakse juhul, kui peate lihtsustama keerulist API-d.
- Segage ja segage fassaadimustrit, mida tavaliselt kasutatakse objektorienteeritud programmeerimises.
- Kui peate koondama andmeid rohkem kui ühest kohast ühte mugavasse API-sse.
- GraphQL-i saate kasutada olemasoleva API abstraktsioonina, et määrata kasutaja vajadustest lähtuv vastuse struktuur.
Mida peate enne GraphQli õppimist õppima?
See GraphQL-i õpetus põhineb Ekspress ja SõlmedJs. Seetõttu saate NodeJS-i põhiteadmistega GraphQL-i väga lihtsalt õppida.
GraphQL põhikomponendid
Nüüd selles GraphQL-i õpetuses õpime GraphQL-i põhikomponente:
Nagu ülaltoodud joonisel näidatud, on GraphQL-il kolm põhikomponenti: 1) päring, 2) lahendaja ja 3) skeem.
Query
Päring on API päring, mille teeb klientmasina rakendus. See toetab täiendusi ja osutab massiividele. Päringut kasutatakse väärtuste lugemiseks või toomiseks.
Päringu osad:
Järgnevalt on toodud päringu olulised osad
- Väli:
Väli näitab lihtsalt, et me küsime serverilt konkreetset teavet. Järgmine on GraphQL-i näide graphQL-i päringu väljast.
query { team { id name } } "data": { "team":[ { "id": 1, "name": "Avengers" } , … ] } }
Ülaltoodud GraphQL-i näites küsime serverilt välja nimega meeskond ja selle alamvälju, nagu id ja nimi. GraphQL-server tagastab meie küsitud andmed.
- Argumendid
In REST, saame URL-i segmentide ja päringuparameetritena edastada ainult ühe argumentide komplekti. Konkreetse profiili saamiseks näeb tüüpiline REST-kõne välja järgmine:
GET /api'team?id=2 Content-Type: application JSON { "id": 2, "name": "Justice League." }
lahendaja
Resolverid pakuvad juhiseid GraphQL-i toimingute andmeteks teisendamiseks. Nad lahendavad päringu andmetele, määratledes lahendaja funktsioonid.
See kuvab serverile protsessi ja asukoha andmete toomiseks vastavalt konkreetsele väljale. Lahendaja eraldab ka andmebaasi skeemi ja API skeemi. Eraldatud teave aitab muuta andmebaasist saadud sisu.
Skeem
GraphQL-i skeem on GraphQL-i juurutamise keskpunkt. See kirjeldab sellega ühenduse loovatele klientidele saadaolevaid funktsioone.
GraphQL-i omadused
Siin on GraphQL-i olulised funktsioonid:
- See pakub deklaratiivset päringukeelt, mis ei ole kohustuslik.
- See on hierarhiline ja tootekeskne.
- GraphQL on tugevasti trükitud. See tähendab, et päringuid täidetakse konkreetse süsteemi kontekstis.
- Päringud GraphQL-is on kodeeritud kliendis, mitte serveris.
- Sellel on kõik OSI mudeli rakenduskihi funktsioonid.
GraphQL-i kliendid
GraphQL-i klient on kood, mis teeb POST-päringuid asjakohasele GraphQL-serverile. Saate GraphQL API-lt otse päringuid teha, kuid hea lähenemisviis on kasutada spetsiaalset klienditeegi Relay abil.
see JavaSkriptiteegi on välja töötanud Facebook Reacti rakenduste loomiseks GraphQL-iga. GraphQL-i kliendid võivad olla CMS-id nagu Drupal, üheleheline rakendus, mobiilirakendus jne.
GraphQL serverid
GraphQL-i serverid on GraphQL-i spetsifikatsiooni serveripoolne rakendus. See kujutab teie andmeid GraphQL API-na, mille kohta teie klientprogramm saab päringuid teha andmebaas.
GraphQL lüüsid
Gateway on mikroteenuse muster, kus saate teiste taustateenustega toimetulemiseks luua eraldi teenuse. See pakub toimivat dokumentatsiooni ja annab mugava võimaluse koguda andmeid rohkem kui ühest allikast ühe päringuga.
Mis on GraphQL-i muutuja?
A Muutuja GraphQL-is kasutatakse dünaamiliste väärtuste eraldamiseks kliendipäringust ja päringu edastamiseks ainulaadse sõnaraamatuna. GraphQL-i muutujat saab kasutada ka kliendi individuaalsete argumentidega kirjutatud päringu või mutatsioonide taaskasutamiseks. GraafQL-is ei saa te dünaamilisi argumente otse päringustringis edastada. Põhjus on selles, et kliendipoolne kood peab programmi käitamise ajal päringustringiga dünaamiliselt manipuleerima.
GraphQL-il on üks hea viis dünaamiliste väärtuste päringust välja arvutamiseks. See edastab need eraldi sõnaraamatuna. Neid väärtusi nimetatakse muutujateks. Kui töötame muutujatega, peame tegema järgmist kolme asja:
- Asendage päringu staatiline väärtus muutuja nimega.
- Deklareerige muutuja nimi üheks muutujaks, mille GraphQL päring aktsepteerib.
- Edastage väärtus transpordipõhises muutujate sõnastikus.
Siin näeb see kõik koos välja:
query HeroNameAndFriends($episode: Episode) { hero(episode: $episode) { name friends { name } } } { "episode": "JEDI" } { "data": { "hero": { "name": "R2-D2", "friends": [ { "name": "Luke Skywalker" }, { "name": "Han Solo" }, { "name": "Leia Organa" } ] } } }
Nagu näete ülaltoodud GraphQL-i näites, oleme lihtsalt edastanud mõne muu muutuja peale uue päringu koostamise vajaduse.
Mis on mutatsioon?
Mutatsioon on viis andmestiku muutmiseks GraphQL-is. See muudab andmesalves olevaid andmeid ja tagastab väärtuse. Mutatsioonid aitavad teil andmeid sisestada, värskendada või kustutada. Üldiselt määratletakse mutatsioonid skeemi osana.
Punktid, mida GraphQL-i mutatsioonide kavandamisel arvestada
Siin on olulised punktid GraphQL-i kujundamisel:
- Nime andmine: Kõigepealt peate nimetama oma mutatsioonide tegusõna. Seejärel nimisõna või vajaduse korral "objekt". Kasutage mutatsioonide nimetamisel CamelCase'i.
- Täpsus: Peate muutma mutatsioonispetsiifiliseks nii palju kui võimalik. Mutatsioonid peaksid esindama kasutaja sooritatud semantilisi toiminguid.
- Sisendobjekt: Kasutage kliendil mutatsiooni teostamiseks argumendina ühte, ainulaadset nõutavat sisendobjekti tüüpi.
- Unikaalne kandevõime tüüp: Iga mutatsiooni jaoks peaksite kasutama ainulaadset kasuliku koormuse tüüpi. Saate lisada ka mutatsiooni väljundi väljana sellele konkreetsele kasuliku koormuse tüübile.
- Pesastumine: Kasutage oma mutatsiooni pesastamist kõikjal, kus see on mõttekas. See võimaldab teil GraphQL API-t täielikult kasutada.
Erinevus GraphQL ja REST vahel
Järgmine tabel näitab olulist erinevust GraphQL ja REST.
GraphQL | REST |
---|---|
See järgib kliendipõhist arhitektuuri. | See järgib serveripõhist arhitektuuri. |
GraphQL-i saab korraldada skeemi järgi. | REST-i saab korraldada lõpp-punktide järgi. |
GraphQL on kasvav kogukond. | REST on väga suur kogukond. |
GraphQL-i arenduskiirus on kiire. | REST-i arenduskiirus on aeglane. |
GraphQL-i õppimiskõver on keeruline. | REST-i õppimiskõver on mõõdukas. |
Identiteet on eraldatud sellest, kuidas te selle hankite. | REST-is kutsutav lõpp-punkt on konkreetse objekti identiteet. |
GraphQL-is määrab server saadaolevad ressursid. | Ressursi kuju ja suuruse määrab server REST-is. |
GraphQL pakub suurt järjepidevust kõigil platvormidel. | Kõigil platvormidel on raske järjepidevust saavutada. |
GraphQL-i puudused
Siin on GraphQL-i puudused:
- Noor ökosüsteem
- Ressursipuudus taustaosas.
- Kompleksse rakenduse kujundusmuster puudub.
- Toimivusprobleemid keeruliste päringutega.
- Overkill väikeste rakenduste jaoks
- GraphQL ei sõltu HTTP vahemällu salvestamise meetoditest, mis võimaldavad päringu sisu salvestada.
- GraphQL ei saa failidest aru. Seetõttu ei sisaldu see failide üleslaadimise funktsioonis.
- GraphQL-iga olge valmis saama palju arenduseelset haridust, näiteks skeemi määratluskeele õppimine.
GraphQL-i kasutatavad avatud lähtekoodiga rakendused ja tööriistad
GraphQL-i kasutatavad olulised avatud lähtekoodiga rakendused ja tööriistad on järgmised.
- Gatsby: Gastby on rakendus, mida toetab GraphQL ja mis võib kasutada andmeid, mis pärinevad rohkem kui ühest GraphQL API allikast. Saate seda kasutada staatilise ja kliendipõhise Reacti rakenduse arendamiseks.
- GraphiQL: See on ID, mis integreerub brauseriga ja suhtleb ka GraphQL API-ga. Mõned funktsioonid, mida GraphiQL sisaldab, on mutatsioonid, andmepäringud ja päringute automaatsed täitmised.
- GraphQL mänguväljak: See on võimas IDE, millel on sisseehitatud redaktor mutatsioonide, valideerimise, GraphQl päringute, tellimuste jms käsitlemiseks. Arendaja saab seda IDE-d kasutada skeemi struktuuri visualiseerimiseks.
- Prisma: Prisma on andmebaasi abstraktsioonikiht, mis muudab teie andmebaasid GraphQL-i API-deks koos CRUD-toimingutega (loomine, lugemine, värskendamine ja kustutamine).
- Natuke: See on avatud lähtekoodiga tööriist ja platvorm, mis teisendab korduvkasutatavat koodi komponentideks. Arendajad saavad neid kasutada erinevate projektide jagamiseks ja arendamiseks.
kokkuvõte
- GraphQL on rakenduskihi serveripoolne tehnoloogia, mille Facebook on välja töötanud olemasolevate andmetega päringute tegemiseks.
- Saate kasutada GraphQL-i andmete toomiseks ühe API-kõnega.
- GraphQL aitab teil mobiilirakenduse jõudlust parandada.
- Olulised GraphQL-i päringukomponendid on: 1) päring, 2) lahendaja, 3) skeem.
- GraphQL on tugevasti trükitud. See tähendab, et päringuid täidetakse konkreetse süsteemi kontekstis.
- GraphQL-i klient on kood, mis teeb POST-päringuid asjakohasele GraphQL-serverile.
- GraphQL-i serverid on GraphQL-i spetsifikatsiooni serveripoolne rakendus.
- Gateway on mikroteenuse muster, kus saate teiste taustateenustega toimetulemiseks luua eraldi teenuse.
- GraphQL-il on üks hea viis dünaamiliste väärtuste päringust välja arvutamiseks.
- Mutatsioon on viis andmestiku muutmiseks GraphQL-is.
- GraphQL-i kujundamisel on olulised punktid: 1) nime andmine, 2) spetsiifilisus, 3) sisendobjekti unikaalne kasuliku koormuse tüüp ja 4) pesastamine.
- GraphQL-i saab korraldada skeemi järgi, samas kui REST-i saab korraldada lõpp-punktide järgi.
- GraphQL-i puuduseks on taustaosa ressursside puudumine.