GraphQL-opplæring for nybegynnere: Hva er, funksjoner og eksempel
Hva er GraphQL?
GraphQL er en applikasjonslagsserversideteknologi som er utviklet av Facebook for å utføre spørringer med eksisterende data. GraphQL kan optimalisere RESTful API-kall. Det gir en deklarativ måte å hente og oppdatere dataene dine på. GraphQL hjelper deg med å laste data fra server til klient. Den gjør det mulig for programmerere å velge hvilke typer forespørsler de liker å gjøre.
Hvorfor bruke GraphQL?
Følgende er årsakene til å bruke GraphQL:
- Den gir et menneskelesbart søk.
- I GraphQL er det veldig enkelt å håndtere mange databaser.
- Den er egnet for mikrotjenester og komplekse systemer.
- Du kan hente data med et enkelt API-kall.
- Det hjelper deg med søk batching og caching.
- Du møter ikke, over og under hentingsproblemer.
- Skreddersy forespørsler til dine behov.
- Det hjelper deg å finne skjemaet i riktig format.
- GraphQL holder automatisk dokumentasjonen synkronisert med API-endringer.
- API-evolusjon er mulig uten versjonering.
- GraphQL-felt brukes i flere spørringer som kan deles til et høyere komponentnivå for gjenbruk.
- Du kan velge hvilke funksjoner som skal vises og hvordan de fungerer.
- Den kan brukes til rask applikasjonsprototyping.
Applikasjoner av GraphQL
Her er de viktige applikasjonene til GraphQL:
- Det gir Relay og andre klientrammer
- GraphQL hjelper deg med å forbedre ytelsen til mobilappen.
- Det kan redusere overhentingsproblemet for å senke skytjenesten på serversiden og redusere nettverksbruken på klientsiden.
- Den kan brukes når klientapplikasjonen skal spesifisere hvilke felt som trengs i langt spørringsformat.
- GraphQL kan utnyttes fullt ut når du må legge til funksjonalitet til din gamle eller eksisterende API.
- Den brukes når du skal forenkle komplekse API.
- Bland og mos fasademønster, som ofte brukes i objektorientert programmering.
- Når du må samle data fra mer enn ett sted til ett praktisk API.
- Du kan bruke GraphQL som en abstraksjon på en eksisterende API for å spesifisere responsstruktur basert på brukerbehov.
Hva trenger du å lære før du lærer GraphQl?
Denne GraphQL-opplæringen er basert på Uttrykke og NodeJs. Derfor kan du lære GraphQL veldig enkelt med en grunnleggende forståelse av NodeJS.
GraphQL nøkkelkomponenter
Nå i denne GraphQL-opplæringen, la oss lære nøkkelkomponentene til GraphQL:
Som vist i figuren ovenfor, er det tre nøkkelkomponenter i GraphQL: 1) Spørring, 2) Resolver og 3) Schema.
Query
Spørringen er en API-forespørsel laget av klientmaskinapplikasjonen. Den støtter utvidelser og peker til matriser. Spørring brukes til å lese eller hente verdier.
Deler av spørringen:
Følgende er de viktige delene av Query
- Field:
Et felt indikerer ganske enkelt at vi ber serveren om spesiell informasjon. Følgende er et GraphQL-eksempel på et felt i graphQL-spørring.
query { team { id name } } "data": { "team":[ { "id": 1, "name": "Avengers" } , … ] } }
I GraphQL-eksemplet ovenfor ber vi serveren om feltet kalt team og dets underfelt som id og navn. GraphQL-serveren returnerer data i vi ba om.
- argumenter
In REST, kan vi bare sende et enkelt sett med argumenter som URL-segmenter og søkeparametere. For å få en bestemt profil, vil et typisk REST-anrop se slik ut:
GET /api'team?id=2 Content-Type: application JSON { "id": 2, "name": "Justice League." }
resolver
Resolvere gir instruksjonene for å konvertere GraphQL-drift til data. De løser spørringen til data ved å definere løserfunksjoner.
Den viser serveren prosessen samt plasseringen for å hente data i henhold til et spesifikt felt. Resolveren skiller også databaseskjema og API-skjema. Den separerte informasjonen hjelper til med å endre innholdet hentet fra databasen.
Skjema
Et GraphQL-skjema er sentrum for GraphQL-implementering. Den beskriver funksjonaliteten som er tilgjengelig for klientene som kobler til den.
Funksjoner i GraphQL
Her er viktige funksjoner i GraphQL:
- Det gir deklarativt spørrespråk, som ikke er avgjørende.
- Den er hierarkisk og produktsentrisk.
- GraphQL er sterkt skrevet. Det betyr at spørringer utføres innenfor konteksten av et bestemt system.
- Spørringer i GraphQL er kodet i klienten, ikke i serveren.
- Den har alle funksjonene til applikasjonslaget til OSI-modellen.
GraphQL-klienter
GraphQL-klient er en kode som sender POST-forespørsler til en relevant GraphQL-server. Du kan spørre en GraphQL API direkte, men den gode tilnærmingen er å utnytte et dedikert klientbibliotek ved å bruke Relay.
Dette JavaSkriptbiblioteket er utviklet av Facebook for å lage React-applikasjoner med GraphQL. GraphQL-klienter kan være et CMS som Drupal, en enkeltsideapplikasjon, en mobilapplikasjon, etc.
GraphQL-servere
GraphQL-servere er implementering på serversiden av GraphQLs spesifikasjon. Den viser dataene dine som GraphQL API, som klientprogrammet ditt kan spørre etter database.
GraphQL-gatewayer
Gateway er et mikrotjenestemønster der du kan bygge en egen tjeneste for å takle andre backend-tjenester. Den tilbyr brukbar dokumentasjon og gir en praktisk måte å samle inn data fra mer enn én kilde med en enkelt forespørsel.
Hva er variabelen i GraphQL?
A Variabel i GraphQL brukes til å skille de dynamiske verdiene fra klientspørringen og sende spørringen som en unik ordbok. Variabel i GraphQL kan også brukes til å gjenbruke spørringen eller mutasjonene skrevet av klienten med individuelle argumenter. I graphQL kan du ikke sende dynamiske argumenter direkte i spørringsstrengen. Årsaken er at kode på klientsiden må manipulere spørringsstrengen dynamisk på det tidspunktet du kjører programmet.
GraphQL har en god måte å faktorisere de dynamiske verdiene ut av spørringen. Den sender dem som en egen ordbok. Disse verdiene er kjent som variabler. Når vi jobber med variabler, må vi gjøre følgende tre ting:
- Erstatt den statiske verdien i spørringen med et variabelnavn.
- Erklær variabelnavnet som en av variablene som er akseptert av GraphQL-spørringen.
- Send verdien i den transportspesifikke variabelordboken.
Slik ser det ut til sammen:
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" } ] } } }
Som du kan se i GraphQL-eksemplet ovenfor, har vi ganske enkelt sendt en annen variabel enn å måtte konstruere en ny spørring.
Hva er mutasjon?
En mutasjon er en måte å endre datasettet i GraphQL. Den endrer data i datalageret og returnerer en verdi. Mutasjoner hjelper deg med å sette inn, oppdatere eller slette data. Generelt er mutasjoner definert som en skjemadel.
Punkter å vurdere når du designer GraphQL-mutasjoner
Her er de viktige punktene når du designer GraphQL:
- Navngivning: Først av alt må du navngi mutasjonsverbet ditt. Deretter substantivet, eller "objekt" hvis det er aktuelt. Bruk camelCase mens du navngir mutasjoner.
- Spesifisitet: Du må gjøre mutasjonsspesifikk så mye som mulig. Mutasjoner skal representere semantiske handlinger utført av brukeren.
- Inndataobjekt: Bruk en unik, nødvendig, inndataobjekttype som et argument for å utføre mutasjon på klienten.
- Unik nyttelasttype: Du bør bruke en unik nyttelasttype for hver mutasjon. Du kan også legge til mutasjonsutgangen som et felt til den aktuelle nyttelasttypen.
- Nesting: Bruk nesting til mutasjonen din uansett hvor det er fornuftig. Den lar deg utnytte GraphQL API fullt ut.
Forskjellen mellom GraphQL og REST
Følgende tabell viser viktig forskjell mellom GraphQL og REST.
GraphQL | REST |
---|---|
Den følger klientdrevet arkitektur. | Den følger serverdrevet arkitektur. |
GraphQL kan organiseres i form av et skjema. | REST kan organiseres i form av endepunkter. |
GraphQL er et voksende fellesskap. | REST er et veldig stort samfunn. |
Utviklingshastigheten i GraphQL er rask. | Utviklingshastigheten i REST er langsom. |
Læringskurven i GraphQL er vanskelig. | Læringskurven i REST er moderat. |
Identiteten er atskilt fra hvordan du henter den. | Endepunktet du kaller i REST er identiteten til et bestemt objekt. |
I GraphQL bestemmer serveren tilgjengelige ressurser. | Formen og størrelsen på ressursen bestemmes av serveren i REST. |
GraphQL gir høy konsistens på tvers av alle plattformer. | Det er vanskelig å få konsistens på tvers av alle plattformer. |
Ulemper med GraphQL
Her er GraphQL-ulempene:
- Ungt økosystem
- Mangel på ressurser på backend-delen.
- Mangler designmønster for en kompleks app.
- Ytelsesproblemer med komplekse søk.
- Overkill for små applikasjoner
- GraphQL er ikke avhengig av HTTP-bufringsmetodene som muliggjør lagring av forespørselsinnhold.
- GraphQL forstår ikke filer. Derfor er en filopplastingsfunksjon ikke inkludert i den.
- Med GraphQL, vær forberedt på å ha mye førutviklingsutdanning som å lære Schema Definition Language.
Open Source-apper og -verktøy som brukes av GraphQL
De viktige open source-appene og verktøyene som brukes av GraphQL er som følger:
- Gatsby: Gastby er en applikasjon drevet av GraphQL som kan bruke data som er avledet fra mer enn én GraphQL API-kilde. Du kan bruke den til å utvikle en statisk og klientbasert React-applikasjon.
- GraphiQL: Det er en ID som integreres med nettleseren og som også samhandler med APIen til GraphQL. Noen av funksjonene som GraphiQL inkluderer er mutasjoner, dataspørring og autofullføringsspørringer.
- GraphQL lekeplass: Det er en kraftig IDE som har en innebygd editor for håndtering av mutasjoner, validering, GraphQl-spørringer, abonnementer osv. Utvikleren kan bruke denne IDEen til å visualisere strukturen til skjemaet.
- prisme: Prisma er et databaseabstraksjonslag som gjør databasene dine om til GraphQL APIer med CRUD-operasjoner (Create, Read, Update and Delete).
- Bit: Det er åpen kildekode-verktøy og plattform som konverterer gjenbrukbar kode til komponenter. Utviklere kan bruke dem til å dele og utvikle ulike prosjekter.
Oppsummering
- GraphQL er en applikasjonslagsserversideteknologi som er utviklet av Facebook for å utføre spørringer med eksisterende data.
- Du kan bruke GraphQL til å hente data med et enkelt API-kall.
- GraphQL hjelper deg med å forbedre ytelsen til mobilappen.
- Viktige GraphQL-spørringskomponenter er: 1) Query, 2) Resolver, 3) Schema.
- GraphQL er sterkt skrevet. Det betyr at spørringer utføres innenfor konteksten av et bestemt system.
- GraphQL-klient er en kode som sender POST-forespørsler til en relevant GraphQL-server.
- GraphQL-servere er implementering på serversiden av GraphQLs spesifikasjoner.
- Gateway er et mikrotjenestemønster der du kan bygge en egen tjeneste for å takle andre backend-tjenester.
- GraphQL har en god måte å faktorisere de dynamiske verdiene ut av spørringen.
- En mutasjon er en måte å endre datasettet i GraphQL.
- De viktige punktene ved utforming av GraphQL er: 1) Navngivning, 2) Spesifisitet, 3) Inndataobjekt Unik nyttelasttype og 4) Nesting.
- GraphQL kan organiseres i form av et skjema, mens REST kan organiseres i form av endepunkter.
- Ulempen med GraphQL er at den mangler ressurser på backend-delen.