fbpx

Ce este GraphQL și de ce să îl folosești?

Articol scris de instructorul nostru, Sebastian Burchi

Ce este GraphQL?

GraphQL este un nou standard API care oferă o alternativă mai eficientă, mai puternică și mai flexibilă la REST.  A fost dezvoltat de Facebook, fiind un proiect de tipul open-source. În momentul de față este întreținut de o mare comunitate de companii și persoane fizice din întreaga lume. În esență, GraphQL permite preluarea declarativă a datelor în cazul în care un client poate specifica exact ce date are nevoie de la un API. În loc de mai multe puncte finale care returnează structuri de date fixe, un server GraphQL expune doar un singur punct final și trimite cu exactitate datele solicitate de un client. Așadar, GraphQL este un limbaj de interogare menit să construiască aplicații client bazate pe o sintaxă intuitivă și flexibilă.

 

Cine folosește GraphQL?

Facebook folosește API-uri GraphQL de aproape 6 ani în cele mai multe dintre componentele aplicațiilor Facebook și Instagram. De când a fost anunțat open source în 2015, un număr mare de industrii, de la giganți tehnologici la startup-uri micuțe, au folosit, de asemenea, această specificație pentru a crea servicii web.

Avem mai sus o diagramă a altor câteva companii importante care folosesc GraphQL în diferite arii din proiectelor lor. Așadar, printre acestea se numără Netflix, Coursera, AirBnB, IBM etc. În concluzie, observăm că popularitatea acestei tehnologii a crescut foarte mult, devenind un pion important în dezvoltarea API-urilor pentru multe companii importante din domeniul IT.

 

 

 

De ce să alegem GraphQL într-un produs software?

Una dintre principalele provocări ale apelurilor tradiționale REST este incapacitatea clientului de a solicita un set de date personalizat (limitat sau extins). În majoritatea cazurilor, odată ce clientul solicită informații de la server, acesta primește toate sau niciunul dintre câmpuri. O altă dificultate este lucrul și menținerea mai multor puncte finale (endpoint-uri). Pe măsură ce o platformă crește, în consecință numărul de endpoint-uri va crește. Prin urmare, clienții trebuie adesea să solicite date de la diferite puncte finale. Acestea sunt doar câteva dintre dezavantajele utilizării REST, iar GraphQL este tehnologia care vine sa rezolve aceste probleme. Apelurile API RESTful sunt inlantuite pe client înainte ca reprezentarea finală să poată fi formată pentru afișare. GraphQL poate reduce acest lucru permițând serverului să agregeze datele pentru client într-o singură interogare. Este important de menționat că REST API era specificația cea mai folosită înainte de GraphQL.

 

Ce cunoștințe ar trebui să deținem pentru a învăța GraphQL?

Principalele componente GraphQL vor fi invățate folosind implementări bazate pe tehnologii Node.js și Javascript. Node.js este un mediu de execuție JavaScript. Printre caracteristicile acestei tehnologii se numără: open-source, cross-platform. Node.js execută cod JavaScript în afara unui browser web. De asemenea, permite dezvoltatorilor care cunosc JavaScript să treacă pe o poziție full-stack, atât pe partea de back-end, cât și pe partea de front-end. De cealaltă parte, JavaScript este unul dintre cele mai populare limbaje în ziua de azi.

Vom avea nevoie de cunoștinte minime legate de aceste tehnologii pentru a putea construi API-ul nostru în GraphQL. În final, în cadrul cursului nostru, com propune o implementare în Java, folosind tehnologii precum Spring Boot, Spring Data JPA, H2 etc.

Există foarte multe tutoriale legate de Node.js. Pentru cei care doresc aprofundarea de cunoștințe în zona asta pot urmări link-urile: https://www.airpair.com/javascript/node-js-tutorial, https://www.javatpoint.com/nodejs-tutorial, https://www.nodebeginner.org/  etc.

Care sunt principalele caracteristici ale GraphQL?

  • Definește o formă sau o schemă de date: primul lucru pe care îl observpm atunci când interacționam cu GraphQL este acela că interogările GraphQL reflectă răspunsul lor. Acest lucru faciliteaza precizarea formei datelor returnate dintr-o interogare, precum și scrierea unor interogări conforme cu datele de care aplicația dezvoltată are nevoie. În plus, acest lucru face ca GraphQL să fie foarte ușor de învățat și utilizat.
  • Natura ierarhică. GraphQL urmărește în mod firesc relațiile dintre obiecte, acolo unde un serviciu RESTful poate necesita mai multe călătorii dus-intors, acestea fiind consumatoare de resurse pe rețelele mobile, sau o declarație complexă de tip join ăn SQL.
  • Strongly typed: fiecare nivel al unei interogări GraphQL corespunde unui anumit tip și fiecare tip descrie un set de câmpuri disponibile. Similar cu SQL, acest lucru permite GraphQL să furnizeze mesaje de eroare descriptive înainte de a executa o interogare.
  • Protocol, nu stocare. Fiecare câmp GraphQL de pe server este susținut de orice funcție arbitrară. GraphQL a trebuit să valorifice toate aceste lucrări existente pentru a fi utile și, prin urmare, nu dictează sau oferă niciun spațiu de stocare, În schimb, GraphQL profită de codul existent al utilizatorilor.
  • Bazat pe introspecție. Un server GraphQL poate fi interogat pentru tipurile pe care le acceptă. Acest lucru creează o platformă puternică pentru instrumente și client, astfel incât să se poată construi deasupra acestor informații.
  • Versiune gratuita. Forma datelor returnate este determinată în totalitate de interogarea clientului, astfel încât serverele devin mai simple ți usor de generalizat. Când se adaugă funcții de produs noi, câmpurile suplimentare pot fi adăugate la server, lăsând clienții existenți neafectați. În momentul în care se elimină funcții vechi, câmpurile de server corespunzătoare pot fi învechite, dar continuă să funcționeze. Acest proces gradual, compatibil cu versiunile anterioare, elimină necesitatea existenței unei versiuni incrementale.
  • Potrivire bună pentru sisteme complexe și microservicii. Prin integrarea mai multor sisteme în spatele API-ului său, GraphQL le unifică și ascunde complexitatea. Serverul GraphQL este apoi responsabil pentru preluarea datelor din sistemele existente și impachetarea acestora în formatul de răspuns GraphQL. Acest lucru este deosebit de relevant pentru infrastructurile vechi sau API-urile terțe care s-au extins de-a lungul anilor și prezintă acum o povară în ceea ce privește mentenanța.
  • Autogenerarea documentatiei API: GraphQL pastrează documentația în sync cu modificările din API. Deoarece API-ul GraphQL este strâns asociat cu codul, odată ce un câmp, un tip sau o interogare se modifică, la fel se modifică și documentele. De acest lucru beneficiază în mod direct dezvoltatorii, deoarece aceștia trebuie sa petreacă mai puțin timp documentând un API.

De ce să învățăm GraphQL?

Pentru a răspunde la această întrebare, aș porni direct cu un fel de indiciu către viitor oferit sub forma unui citat de Sacha Greif, unul dintre editorii sondajului State Of Javascript 2017: “Aș spune să fim cu ochii pe GraphQL. Este tehnologia care are cel mai mare raport de interese, în timp ce are încă un număr mic de utilizatori actuali, ceea ce indică probabil o porțiune considerabilă din ecosistemul care învață GraphQL în 2018!”. Dacă mi-aș da cu părerea, aș spune că are dreptate. Încă din 2018, dacă nu chiar mai devreme, GraphQL a trecut printr-o adopție dramatică din partea comunității de dezvoltare web. În aceste condiții, consider că învățarea modului de lucru cu această tehnologie va deveni una dintre noile cerințe pentru dezvoltatorii juniori din industria IT.

 

    Sponsori și parteneri