Tutorial GraphQL pentru începători: Ce este, caracteristici și exemplu
Ce este GraphQL?
GraphQL este o tehnologie de la nivelul serverului la nivel de aplicație, care este dezvoltată de Facebook pentru a executa interogări cu datele existente. GraphQL poate optimiza apelurile API RESTful. Oferă o modalitate declarativă de preluare și actualizare a datelor. GraphQL vă ajută să încărcați date de la server la client. Le permite programatorilor să aleagă tipurile de solicitări pe care le place să le facă.
De ce să folosiți GraphQL?
Următoarele sunt motivele utilizării GraphQL:
- Oferă o interogare care poate fi citită de om.
- În GraphQL, este foarte ușor să te ocupi cu multe baze de date.
- Este potrivit pentru microservicii și sisteme complexe.
- Puteți prelua date cu un singur apel API.
- Vă ajută cu punerea în loturi a interogărilor și stocarea în cache.
- Nu te confrunți, peste și sub probleme de preluare.
- Adaptarea cererilor la nevoile dvs.
- Vă ajută să descoperiți schema în formatul adecvat.
- GraphQL păstrează automat documentația sincronizată cu modificările API.
- Evoluția API este posibilă fără versiune.
- Câmpurile GraphQL sunt folosite în mai multe interogări care pot fi partajate la un nivel superior de componentă pentru reutilizare.
- Puteți alege ce funcții să expuneți și cum funcționează.
- Poate fi folosit pentru prototiparea rapidă a aplicațiilor.
Aplicații ale GraphQL
Iată aplicațiile importante ale GraphQL:
- Oferă relay și alte cadre pentru clienți
- GraphQL vă ajută să îmbunătățiți performanța aplicației mobile.
- Poate reduce problema de preluare excesivă pentru a reduce serviciul cloud de pe partea de server și poate reduce utilizarea rețelei de partea clientului.
- Poate fi folosit atunci când aplicația client trebuie să specifice ce câmpuri sunt necesare în format de interogare lungă.
- GraphQL poate fi utilizat pe deplin atunci când trebuie să adăugați funcționalități la API-ul dvs. vechi sau existent.
- Este folosit atunci când trebuie să simplificați API complexe.
- Combinați și amestecați modelul de fațadă, care este utilizat în mod obișnuit în programarea orientată pe obiecte.
- Când trebuie să agregați date din mai multe locuri într-un singur API convenabil.
- Puteți utiliza GraphQL ca o abstractizare pe un API existent pentru a specifica structura răspunsului în funcție de nevoile utilizatorului.
Ce trebuie să înveți înainte de a învăța GraphQl?
Acest tutorial GraphQL se bazează pe Expres și NodeJs. Prin urmare, puteți învăța GraphQL foarte ușor cu o înțelegere de bază a NodeJS.
Componentele cheie GraphQL
Acum, în acest tutorial GraphQL, să învățăm componentele cheie ale GraphQL:
După cum se arată în figura de mai sus, există trei componente cheie ale GraphQL: 1) Interogare, 2) Resolver și 3) Schema.
Întrebare
Interogarea este o solicitare API făcută de aplicația mașină client. Suportă creșteri și puncte către matrice. Interogarea este utilizată pentru a citi sau a prelua valori.
Părți ale interogării:
Următoarele sunt părțile importante din Query
- Camp:
Un câmp indică pur și simplu că solicităm serverului anumite informații. Mai jos este un exemplu GraphQL de câmp în interogarea graphQL.
query { team { id name } } "data": { "team":[ { "id": 1, "name": "Avengers" } , … ] } }
În exemplul GraphQL de mai sus, solicităm serverului câmpul numit team și subcâmpurile sale, cum ar fi id și nume. Serverul GraphQL returnează datele pe care le-am cerut.
- Argumente
In REST, putem transmite doar un singur set de argumente ca segmente URL și parametri de interogare. Pentru a obține un anumit profil, un apel REST tipic va arăta astfel:
GET /api'team?id=2 Content-Type: application JSON { "id": 2, "name": "Justice League." }
rezolvitorului
Rezolvatorii oferă instrucțiuni pentru conversia operațiunii GraphQL în date. Ei rezolvă interogarea la date prin definirea funcțiilor de rezoluție.
Acesta afișează serverului procesul, precum și locația pentru a prelua datele în funcție de un anumit câmp. Resolverul separă, de asemenea, schema bazei de date și schema API. Informațiile separate ajută la modificarea conținutului obținut din baza de date.
Schemă
O schemă GraphQL este centrul implementării GraphQL. Descrie funcționalitatea disponibilă clienților care se conectează la acesta.
Caracteristicile GraphQL
Iată caracteristicile importante ale GraphQL:
- Oferă un limbaj de interogare declarativ, care nu este imperativ.
- Este ierarhic și centrat pe produs.
- GraphQL este puternic tastat. Înseamnă că interogările sunt executate în contextul unui anumit sistem.
- Interogările din GraphQL sunt codificate în client, nu în server.
- Are toate caracteristicile stratului de aplicație al modelului OSI.
Clienții GraphQL
Clientul GraphQL este un cod care face cereri POST către un server GraphQL relevant. Puteți interoga direct un API GraphQL, dar abordarea bună este să folosiți o bibliotecă client dedicată folosind Relay.
Acest JavaBiblioteca de scripturi este dezvoltată de Facebook pentru a realiza aplicații React cu GraphQL. Clienții GraphQL pot fi un CMS precum Drupal, o aplicație cu o singură pagină, o aplicație mobilă etc.
Servere GraphQL
Serverele GraphQL sunt implementări laterale ale serverelor a specificației GraphQL. Acesta prezintă datele dvs. ca API-ul GraphQL, pe care programul dumneavoastră client îl poate solicita Baza de date.
Gateway-uri GraphQL
Gateway este un model de microservicii în care puteți construi un serviciu separat pentru a face față altor servicii backend. Oferă documentație funcțională și oferă o modalitate convenabilă de a colecta date din mai multe surse cu o singură solicitare.
Care este variabila în GraphQL?
A Variabilă în GraphQL este folosit pentru a separa valorile dinamice de interogarea clientului și pentru a transmite interogarea ca un dicționar unic. Variabila în GraphQL poate fi folosită și pentru reutilizarea interogării sau a mutațiilor scrise de client cu argumente individuale. În graphQL, nu puteți trece argumente dinamice direct în șirul de interogare. Motivul este că codul de pe partea clientului trebuie să manipuleze dinamic șirul de interogări în momentul în care rulați programul.
GraphQL are o modalitate bună de a factoriza valorile dinamice din interogare. Le trece ca un dicționar separat. Aceste valori sunt cunoscute ca variabile. Ori de câte ori lucrăm cu variabile, trebuie să facem următoarele trei lucruri:
- Înlocuiți valoarea statică din interogare cu un nume de variabilă.
- Declarați numele variabilei ca una dintre variabilele care sunt acceptate de interogarea GraphQL.
- Transmiteți valoarea în dicționarul de variabile specific transportului.
Iată cum arată toate împreună:
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" } ] } } }
După cum puteți vedea în exemplul GraphQL de mai sus, pur și simplu am trecut o variabilă diferită, în afară de necesitatea de a construi o nouă interogare.
Ce este Mutația?
O mutație este o modalitate de a schimba setul de date în GraphQL. Modifică datele din depozitul de date și returnează o valoare. Mutațiile vă ajută să introduceți, să actualizați sau să ștergeți date. În general, mutațiile sunt definite ca o parte a schemei.
Puncte de luat în considerare la proiectarea mutațiilor GraphQL
Iată punctele importante în timpul proiectării GraphQL:
- Denumire: În primul rând, trebuie să-ți numești verbul mutațiilor. Apoi substantivul sau „obiect”, dacă este cazul. Utilizați camelCase în timp ce denumiți mutațiile.
- Specificitate: Trebuie să faceți cât mai mult posibil mutații specifice. Mutațiile ar trebui să reprezinte acțiuni semantice întreprinse de utilizator.
- Obiect de intrare: Utilizați un tip de obiect de intrare unic, obligatoriu, ca argument pentru executarea mutației pe client.
- Tip unic de sarcină utilă: Ar trebui să utilizați un tip unic de sarcină utilă pentru fiecare mutație. De asemenea, puteți adăuga rezultatul mutației ca câmp la acel tip de sarcină utilă.
- Cuibărire: Folosește cuibărirea la mutația ta oriunde are sens. Vă permite să utilizați pe deplin API-ul GraphQL.
Diferența dintre GraphQL și REST
Următorul tabel arată diferența importantă între GraphQL și REST.
GraphQL | REST |
---|---|
Urmează arhitectura condusă de client. | Urmează arhitectura condusă de server. |
GraphQL poate fi organizat în termeni de schemă. | REST poate fi organizat în termeni de puncte finale. |
GraphQL este o comunitate în creștere. | REST este o comunitate foarte mare. |
Viteza de dezvoltare în GraphQL este rapidă. | Viteza de dezvoltare în REST este Slow. |
Curba de învățare în GraphQL este dificilă. | Curba de învățare în REST este moderată. |
Identitatea este separată de modul în care o obțineți. | Punctul final pe care îl apelați în REST este identitatea unui anumit obiect. |
În GraphQL, serverul determină resursele disponibile. | Forma și dimensiunea resursei sunt determinate de server în REST. |
GraphQL oferă o consistență ridicată pe toate platformele. | Este greu să obții coerență pe toate platformele. |
Dezavantajele GraphQL
Iată dezavantajele GraphQL:
- Ecosistem tânăr
- Lipsa resurselor pe partea de backend.
- Lipsește modelul de design pentru o aplicație complexă.
- Probleme de performanță cu interogări complexe.
- Exagerat pentru aplicații mici
- GraphQL nu depinde de metodele de stocare în cache HTTP care permit stocarea conținutului cererii.
- GraphQL nu înțelege fișierele. Prin urmare, o funcție de încărcare a fișierelor nu este inclusă în ea.
- Cu GraphQL, fiți pregătit să aveți o mulțime de educație pre-dezvoltare, cum ar fi învățarea limbajului de definire a schemei.
Aplicații și instrumente open source utilizate de GraphQL
Aplicațiile și instrumentele open source importante utilizate de GraphQL sunt următoarele:
- Gatsby: Gastby este o aplicație alimentată de GraphQL care poate folosi date care sunt derivate din mai multe surse API GraphQL. Îl puteți folosi pentru a dezvolta o aplicație React statică și bazată pe client.
- GraphiQL: Este un ID care se integrează cu browserul și interacționează, de asemenea, cu API-ul GraphQL. Unele dintre funcțiile pe care le include GraphiQL sunt mutații, interogări de date și interogări de autocompletare.
- Locul de joacă GraphQL: Este un IDE puternic care are un editor încorporat pentru gestionarea mutațiilor, validarea, interogările GraphQl, abonamentele etc. Dezvoltatorul poate folosi acest IDE pentru a vizualiza structura schemei.
- prismă: Prisma este un strat de abstractizare a bazei de date care transformă bazele de date în API-uri GraphQL cu operațiuni CRUD (Creare, Read, Update and Delete).
- Pic: Este un instrument și o platformă open-source care convertește codul reutilizabil în componente. Dezvoltatorii le pot folosi pentru a partaja și dezvolta diverse proiecte.
Rezumat
- GraphQL este o tehnologie de la nivelul serverului la nivel de aplicație care este dezvoltată de Facebook pentru a executa interogări cu datele existente.
- Puteți utiliza GraphQL pentru a prelua date cu un singur apel API.
- GraphQL vă ajută să îmbunătățiți performanța aplicației mobile.
- Componentele importante ale interogării GraphQL sunt: 1) Query, 2) Resolver, 3) Schema.
- GraphQL este puternic tastat. Înseamnă că interogările sunt executate în contextul unui anumit sistem.
- Clientul GraphQL este un cod care face cereri POST către un server GraphQL relevant.
- Serverele GraphQL sunt implementări laterale ale serverelor a specificației GraphQL.
- Gateway este un model de microservicii în care puteți construi un serviciu separat pentru a face față altor servicii backend.
- GraphQL are o modalitate bună de a factoriza valorile dinamice din interogare.
- O mutație este o modalitate de a schimba setul de date în GraphQL.
- Punctele importante în timpul proiectării GraphQL sunt: 1) Denumirea, 2) Specificitatea, 3) Obiectul de intrare Tip unic de sarcină utilă și 4) Imbricare.
- GraphQL poate fi organizat în termeni de schemă, în timp ce REST poate fi organizat în termeni de puncte finale.
- Dezavantajul GraphQL este că are lipsă de resurse în partea de backend.