GraphQL tutorial for nybegyndere - introduktion

Jeg er Robert fra GraphQL Editor. En gang et par dage vil jeg sende en tutorial GraphQL for nybegyndere. Dette indlæg er en introduktion til GraphQL. Følg mig for at få mere!

Hvor kom GraphQL fra?

GraphQL blev introduceret i 2015 af Facebook som et alternativ til REST. Dengang var det ikke bare et eksperiment - det var allerede i produktion i facebook-mobilapps siden 2012. Lige efter offentlig udgivelse blev det ekstremt populært, og omkring det tidspunkt arbejdede mange virksomheder på lignende løsninger. Denne teknologi begyndte at få opmærksomhed, da den kan bruges med mange andre sprog, og der er mange klar til at gå biblioteker til de mest populære stilarter. Lige nu ifølge Stackshare er der næsten 2k virksomheder, der bruger det. Tidlige brugere inkluderede Coursera, Github, ProductHunt, Yelp eller Twitter.

Hvad er GraphQL?

For at introducere GraphQL vil jeg bruge et eksempel på data og sammenligne funktionalitet med REST. Dette eksempel vil vise dig, hvorfor ny teknologi er mere effektiv, enklere at bruge, og hvad der var motivationen for at skabe den.

Lad os antage, at vi opretter en backend til applikation med to versioner (web og mobil). Kernen i systemet vil indeholde information om fodboldspillere, hold de har spillet og nogle andre detaljer. Mobilversionen af ​​applikationen skulle vise mindre information.

Web Mobil
Navn
Bio
Team (beskrivelse, år)
Team (beskrivelse, år)
Navn
Hold (år)
Hold (år)
-

Hvis vi ville oprette API baseret på REST, skulle vi derfor skrive to anmodninger:

GET /player/{id}
{
  "id": „101”
  "name": „David Beckham”
  "bio": „…”
  „age”: „43”
}


GET /player/{id}/teams
{
  „Teams”: [{
    „id": „201”,
    „name”: „Real Madrid”,
    „description": „…”,
    „goals”: „…”,
    „matches”: „…”,
    „years”: „2003-2007”
  },
  ...
  ]
}

Ved at se på svaret kan du se, at vi får flere data, end vi har brug for i begge tilfælde. Det er vigtigt i mobilapps på grund af mobildata og indlæsningshastigheden. Selvfølgelig kunne vi overvinde det ved at skrive forskellige endepunkter, som kun vil give os det, vi ønsker. En anden måde er at implementere API på en måde, så vi kunne vælge, hvad vi vil, dvs. GET /player/{id}/teams?only=name. Men det er den svære løsning at opretholde i agil softwareudvikling, hvor kravene ændrer sig hver uge.

Modsat det kan vi introducere GraphQL.

Backend med GraphQL er mere fleksibel, fordi den kun har ét slutpunkt. Kunder skriver en forespørgsel og angiver, hvad du præcist vil have og får data i JSON. I vores fodboldeksempel kan vi oprette forespørgsler til hver platform (web og mobil).

Webapplikation:

query {
  player(id: "101") {
    name
    bio
    teams {
      title
      description
    }
  }
}

Svar:

{
  "data": {
    "player": {
      "name": "David Beckham",
      "bio": "...",
      "teams": [{
        "title": "Real Madrid",
        "description": "..."
      }, ...]
    }
  }
}

Mobilapp

query {
  player(id: "101") {
    name
    teams {
      title
    }
  }
}

Svar:

{
  "data": {
    "player": {
      "name": "David Beckham",
      "teams": [{
        "title": "Real Madrid"
      }, ...]
    }
  }
}

Som du kan se med hver forespørgsel, får vi kun det, vi ønsker. Det er styrken ved GraphQL - fleksibilitet. Du behøver ikke oprette slutpunkter for forskellige skærme. Forskellige klienter kan bruge et én gang defineret skema på en måde, som de har brug for.

Færre anmodninger.

I traditionel REST-tilgang er der normalt mange GET-anmodninger om at vise data på én skærm. Det er ikke supereffektivt, når det kommer til mobilapps - det bremser dem og har brug for mere internetdataoverførsel. GraphQL tillader en bruger kun at oprette ét slutpunkt. Takket være teknologi introduceret af Facebook-ingeniører er kommunikationen mellem klient og server bedre optimeret.

Forespørgselssprog

Den vigtigste egenskab ved GraphQL er, at den er sprogagnostisk. Det er ikke skabt til at arbejde med specifik teknologi. Det er et forespørgselssprog med sine egne regler, som gælder for de fleste populære programmeringssprog. Der er mange understøttende biblioteker på internettet til:C#/.NET, PHP. Javascript, Java, Python, Ruby og mange flere.

Resumé

GraphQL er et forespørgselssprog og runtime, som vi kan bruge til at bygge og afsløre API'er som et stærkt indtastet skema i stedet for hundredvis af REST-slutpunkter. Dine kunder ser skemaet. De skriver en forespørgsel om, hvad de vil have. De sender det over og får præcis de data tilbage, de bad om og intet mere. GrapqhQL fordele:

  • færre data og anmodninger om mobilapps,
  • enkelhed og synlig API-struktur
  • kan bruges med mange teknologier
  • bruges af Twitter, Facebook, Github og mange flere

Hvis du leder efter de bedste graphql-tutorials, så tjek dette indlæg.