GraphQL-opetusohjelma aloittelijoille: Mikä on, ominaisuudet ja esimerkki

Mikä on GraphQL?

GraphQL on sovelluskerroksen palvelinpuolen tekniikka, jonka Facebook on kehittänyt kyselyjen suorittamiseen olemassa olevilla tiedoilla. GraphQL voi optimoida RESTful API -kutsut. Se tarjoaa deklaratiivisen tavan hakea ja päivittää tietosi. GraphQL auttaa sinua lataamaan tietoja palvelimelta asiakkaalle. Sen avulla ohjelmoijat voivat valita, minkä tyyppisiä pyyntöjä he haluavat tehdä.

Miksi käyttää GraphQL:ää?

Seuraavat syyt GraphQL:n käyttöön:

  • Se tarjoaa ihmisen luettavissa olevan kyselyn.
  • GraphQL:ssä on erittäin helppoa käsitellä monia tietokantoja.
  • Se sopii mikropalveluihin ja monimutkaisiin järjestelmiin.
  • Voit hakea tietoja yhdellä API-kutsulla.
  • Se auttaa sinua kyselyjen erässä ja välimuistissa.
  • Et kohtaa, yli- ja alihakemista ongelmia.
  • Toiveiden räätälöinti tarpeidesi mukaan.
  • Se auttaa sinua löytämään skeeman sopivassa muodossa.
  • GraphQL pitää dokumentaation automaattisesti synkronoituna API-muutosten kanssa.
  • API-kehitys on mahdollista ilman versiointia.
  • GraphQL-kenttiä käytetään useissa kyselyissä, jotka voidaan jakaa korkeammalle komponenttitasolle uudelleenkäyttöä varten.
  • Voit valita, mitkä toiminnot näkyvät ja miten ne toimivat.
  • Sitä voidaan käyttää nopeaan sovellusten prototyyppien luomiseen.

GraphQL:n sovellukset

Tässä ovat GraphQL:n tärkeät sovellukset:

  • Se tarjoaa Relay- ja muut asiakaskehykset
  • GraphQL auttaa sinua parantamaan mobiilisovelluksen suorituskykyä.
  • Se voi vähentää ylihaku-ongelmaa alentamaan palvelinpuolen pilvipalvelua ja vähentämään asiakaspuolen verkon käyttöä.
  • Sitä voidaan käyttää, kun asiakassovelluksen on määritettävä, mitä kenttiä tarvitaan pitkän kyselyn muodossa.
  • GraphQL:ää voidaan hyödyntää täysimääräisesti, kun joudut lisäämään toimintoja vanhaan tai olemassa olevaan API:hen.
  • Sitä käytetään, kun sinun on yksinkertaistettava monimutkainen API.
  • Sekoita ja sekoita julkisivukuvio, jota käytetään yleisesti olio-ohjelmoinnissa.
  • Kun sinun on koottava tiedot useammasta kuin yhdestä paikasta yhdeksi käteväksi API:ksi.
  • Voit käyttää GraphQL:ää olemassa olevan API:n abstraktiona määrittääksesi vastausrakenteen käyttäjien tarpeiden mukaan.

Mitä sinun on opittava ennen GraphQl:n oppimista?

Tämä GraphQL-opetusohjelma perustuu Ilmaista ja SolmuJs. Siksi voit oppia GraphQL:n erittäin helposti NodeJS:n perusymmärryksellä.

GraphQL:n avainkomponentit

Tässä GraphQL-opetusohjelmassa opitaan GraphQL:n avainkomponentit:

GraphQL:n avainkomponentit
GraphQL:n avainkomponentit

Kuten yllä olevasta kuvasta näkyy, GraphQL:ssä on kolme avainkomponenttia: 1) Query, 2) Resolver ja 3) Schema.

Kysymys

Kysely on asiakaskonesovelluksen tekemä API-pyyntö. Se tukee lisäyksiä ja osoittaa taulukoihin. Kyselyä käytetään arvojen lukemiseen tai hakemiseen.

Kyselyn osat:

Seuraavassa on kyselyn tärkeät osat

  1. Ala:

Kenttä osoittaa yksinkertaisesti, että pyydämme palvelimelta tiettyjä tietoja. Seuraavassa on GraphQL-esimerkki graphQL-kyselyn kentästä.

query {
    team {
        id name
    }
}

"data": {
    "team":[ {
        "id": 1, 
        "name": "Avengers"
    }
    ,
    …
]
}
}

Yllä olevassa GraphQL-esimerkissä kysymme palvelimelta kenttä nimeltä team ja sen alikentät, kuten id ja name. GraphQL-palvelin palauttaa pyydetyt tiedot.

  1. argumentit

In REST, voimme välittää vain yhden argumenttijoukon URL-segmenteinä ja kyselyparametreina. Tietyn profiilin saamiseksi tyypillinen REST-puhelu näyttää seuraavalta:

GET /api'team?id=2 Content-Type: application JSON
 {
    "id": 2, 
    "name": "Justice League."
}

resolveri

Resolverit tarjoavat ohjeet GraphQL-toiminnan muuntamiseen tiedoiksi. Ne ratkaisevat kyselyn tietoihin määrittämällä ratkaisijafunktiot.

Se näyttää palvelimelle prosessin sekä sijainnin tietojen hakemiseksi tietyn kentän mukaan. Ratkaisija erottaa myös tietokantaskeeman ja API-skeeman. Erotetut tiedot auttavat muokkaamaan tietokannasta saatua sisältöä.

Malli

GraphQL-skeema on GraphQL-toteutuksen keskus. Se kuvaa toiminnallisuutta, joka on käytettävissä siihen muodostavien asiakkaiden käytettävissä.

GraphQL:n ominaisuudet

Tässä on GraphQL:n tärkeitä ominaisuuksia:

  • Se tarjoaa deklaratiivisen kyselykielen, mikä ei ole välttämätöntä.
  • Se on hierarkkinen ja tuotekeskeinen.
  • GraphQL on vahvasti kirjoitettu. Se tarkoittaa, että kyselyt suoritetaan tietyn järjestelmän puitteissa.
  • GraphQL:n kyselyt on koodattu asiakkaaseen, ei palvelimeen.
  • Siinä on kaikki OSI-mallin sovelluskerroksen ominaisuudet.

GraphQL-asiakkaat

GraphQL-asiakas on koodi, joka tekee POST-pyynnöt asiaankuuluvalle GraphQL-palvelimelle. Voit tehdä kyselyn suoraan GraphQL API:sta, mutta hyvä tapa on hyödyntää omaa asiakaskirjastoa Relayn avulla.

Tämä JavaSkriptikirjasto on Facebookin kehittämä React-sovellusten tekemiseen GraphQL:n avulla. GraphQL-asiakkaat voivat olla sisällönhallintajärjestelmiä, kuten Drupal, yksisivuinen sovellus, mobiilisovellus jne.

GraphQL-palvelimet

GraphQL-palvelimet ovat GraphQL:n määrittelyn palvelinpuolen toteutusta. Se kuvaa tietosi GraphQL API:na, jota asiakasohjelmasi voi pyytää tietokanta.

GraphQL-yhdyskäytävät

Gateway on mikropalvelumalli, jossa voit rakentaa erillisen palvelun muiden taustapalveluiden kanssa. Se tarjoaa toimivaa dokumentaatiota ja kätevän tavan kerätä tietoja useammasta kuin yhdestä lähteestä yhdellä pyynnöllä.

Mikä on GraphQL:n muuttuja?

A Muuttuja GraphQL:ssä käytetään erottamaan dynaamiset arvot asiakaskyselystä ja välittämään kysely yksilöllisenä sanakirjana. GraphQL:n muuttujaa voidaan käyttää myös asiakkaan kirjoittaman kyselyn tai mutaatioiden uudelleenkäyttöön yksittäisillä argumenteilla. graphQL:ssä et voi välittää dynaamisia argumentteja suoraan kyselymerkkijonoon. Syynä on, että asiakaspuolen koodin on manipuloitava kyselymerkkijonoa dynaamisesti ohjelmaa suoritettaessa.

GraphQL:llä on yksi hyvä tapa erottaa dynaamiset arvot kyselystä. Se välittää ne erillisenä sanakirjana. Nämä arvot tunnetaan muuttujina. Aina kun työskentelemme muuttujien kanssa, meidän on tehtävä seuraavat kolme asiaa:

  1. Korvaa kyselyn staattinen arvo muuttujan nimellä.
  2. Ilmoita muuttujan nimi yhdeksi muuttujista, jotka GraphQL-kysely hyväksyy.
  3. Välitä arvo kuljetuskohtaisessa muuttujien sanakirjassa.

Tältä se näyttää kaikki yhdessä:

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"
        }
      ]
    }
  }
}

Kuten yllä olevasta GraphQL-esimerkistä näet, olemme yksinkertaisesti välittäneet toisen muuttujan kuin uuden kyselyn luomisen.

Mikä on mutaatio?

Mutaatio on tapa muuttaa datajoukkoa GraphQL:ssä. Se muokkaa tietovaraston tietoja ja palauttaa arvon. Mutaatiot auttavat sinua lisäämään, päivittämään tai poistamaan tietoja. Yleensä mutaatiot määritellään skeemaosiksi.

Huomioitavaa GraphQL-mutaatioita suunniteltaessa

Tässä ovat tärkeät kohdat GraphQL:n suunnittelussa:

  • Nimeäminen: Ensinnäkin sinun on nimettävä mutaatioverbi. Sitten substantiivi tai "objekti" tarvittaessa. Käytä camelCasea mutaatioiden nimeämisessä.
  • Tarkkuus: Sinun on tehtävä mutaatiospesifisiä niin paljon kuin mahdollista. Mutaatioiden tulee edustaa käyttäjän suorittamia semanttisia toimia.
  • Syöteobjekti: Käytä yhtä, ainutlaatuista, pakollista syöteobjektityyppiä argumenttina mutaation suorittamiseksi asiakkaalla.
  • Ainutlaatuinen hyötykuormatyyppi: Sinun tulee käyttää ainutlaatuista hyötykuormatyyppiä jokaiselle mutaatiolle. Voit myös lisätä mutaatiotulosteen kenttään kyseiseen hyötykuormatyyppiin.
  • Pesiminen: Käytä sisäkkäisyyttä mutaatioosi missä se on järkevää. Sen avulla voit hyödyntää täysimääräisesti GraphQL API:ta.

Ero GraphQL:n ja REST:n välillä

Seuraava taulukko näyttää tärkeän eron GraphQL ja REST.

GraphQL REST
Se noudattaa asiakaslähtöistä arkkitehtuuria. Se noudattaa palvelinpohjaista arkkitehtuuria.
GraphQL voidaan järjestää skeemaksi. REST voidaan järjestää päätepisteiden mukaan.
GraphQL on kasvava yhteisö. REST on erittäin suuri yhteisö.
GraphQL:n kehitysnopeus on nopea. REST:n kehitysnopeus on hidasta.
GraphQL:n oppimiskäyrä on vaikea. REST:n oppimiskäyrä on kohtalainen.
Identiteetti erotetaan tavasta, jolla haet sen. Päätepiste, jota kutsut RESTissä, on tietyn objektin identiteetti.
GraphQL:ssä palvelin määrittää käytettävissä olevat resurssit. Resurssin muodon ja koon määrittää palvelin REST-tilassa.
GraphQL tarjoaa korkean johdonmukaisuuden kaikilla alustoilla. Johdonmukaisuuden saavuttaminen kaikilla alustoilla on vaikeaa.

GraphQL:n haitat

Tässä ovat GraphQL:n haitat:

  • Nuori ekosysteemi
  • Resurssien puute taustaosasta.
  • Monimutkaisen sovelluksen suunnittelukuvio puuttuu.
  • Monimutkaisten kyselyjen suorituskykyongelmat.
  • Ylivoima pieniin sovelluksiin
  • GraphQL ei ole riippuvainen HTTP-välimuistimenetelmistä, jotka mahdollistavat pyyntösisällön tallentamisen.
  • GraphQL ei ymmärrä tiedostoja. Siksi tiedostojen latausominaisuus ei sisälly siihen.
  • GraphQL:n avulla valmistaudu paljon esikehitysopetukseen, kuten Schema Definition Language -kielen oppimiseen.

GraphQL:n käyttämät avoimen lähdekoodin sovellukset ja työkalut

GraphQL:n käyttämät tärkeät avoimen lähdekoodin sovellukset ja työkalut ovat seuraavat:

  • gatsby: Gastby on GraphQL:n tuottama sovellus, joka voi käyttää tietoja, jotka on johdettu useammasta kuin yhdestä GraphQL API -lähteestä. Voit käyttää sitä staattisen ja asiakaspohjaisen React-sovelluksen kehittämiseen.
  • GraphiQL: Se on tunnus, joka integroituu selaimeen ja on myös vuorovaikutuksessa GraphQL:n API:n kanssa. Joitakin GraphiQL:n sisältämiä toimintoja ovat mutaatiot, datakyselyt ja automaattiset kyselyt.
  • GraphQL leikkikenttä: Se on tehokas IDE, jossa on sisäänrakennettu editori mutaatioiden, validoinnin, GraphQl-kyselyjen, tilausten jne. käsittelyä varten. Kehittäjä voi käyttää tätä IDE:tä skeeman rakenteen visualisointiin.
  • Prisma: Prisma on tietokannan abstraktiokerros, joka muuttaa tietokannat GraphQL-sovellusliittymiksi CRUD-toiminnoilla (Create, Read, Update and Delete).
  • Bitti: Se on avoimen lähdekoodin työkalu ja alusta, joka muuntaa uudelleenkäytettävän koodin komponenteiksi. Kehittäjät voivat käyttää niitä erilaisten projektien jakamiseen ja kehittämiseen.

Yhteenveto

  • GraphQL on sovelluskerroksen palvelinpuolen tekniikka, jonka Facebook on kehittänyt kyselyjen suorittamiseen olemassa olevilla tiedoilla.
  • GraphQL:n avulla voit hakea tietoja yhdellä API-kutsulla.
  • GraphQL auttaa sinua parantamaan mobiilisovelluksen suorituskykyä.
  • Tärkeitä GraphQL-kyselykomponentteja ovat: 1) Kysely, 2) Resolver, 3) Schema.
  • GraphQL on vahvasti kirjoitettu. Se tarkoittaa, että kyselyt suoritetaan tietyn järjestelmän puitteissa.
  • GraphQL-asiakas on koodi, joka tekee POST-pyyntöjä asiaankuuluvalle GraphQL-palvelimelle.
  • GraphQL-palvelimet ovat GraphQL:n määrittelyn palvelinpuolen toteutusta.
  • Gateway on mikropalvelumalli, jossa voit rakentaa erillisen palvelun muiden taustapalveluiden kanssa.
  • GraphQL:llä on yksi hyvä tapa erottaa dynaamiset arvot kyselystä.
  • Mutaatio on tapa muuttaa datajoukkoa GraphQL:ssä.
  • Tärkeitä kohtia GraphQL:n suunnittelussa ovat: 1) Nimeäminen, 2) Spesifisyys, 3) Syöteobjekti Ainutlaatuinen hyötykuormatyyppi ja 4) Sisäkkäisyys.
  • GraphQL voidaan järjestää skeemaksi, kun taas REST voidaan järjestää päätepisteiden mukaan.
  • GraphQL:n haittapuoli on, että sillä ei ole resursseja taustaosasta.