GraphQL cu Drupal 8: Ghidul pentru tot ce trebuie să știți (cu exemple!)

Publicat: 2019-12-17

GraphQL vorbește cu Drupal în HTTP și rezultatele sunt mai structurate decât oricând!

Astăzi, experiențele grozave ale clienților încep cu conținut grozav. Conținut care este disponibil peste tot. Cu inițiativa API-first a Drupal 8, conținutul care este gestionat de Drupal poate fi utilizat cu ușurință de alte sisteme prin HTTP. REST (Representational State Transfer) oferă un standard de proiectare pentru API-uri. Cu toate acestea, cu aplicațiile client din ce în ce mai complexe și mai provocatoare, dezvoltatorii au nevoie de o soluție mai modernă și mai eficientă.

GraphQL cu drupal8



GraphQL s-a născut din cererea pentru o interacțiune client-server mai flexibilă și mai puternică. Este un limbaj de interogare sofisticat și o mașină de execuție. În 2012, Facebook a creat specificația pentru acesta, care descrie capacitățile sale și cerințele modelelor de date pentru aplicațiile fără cap.

Ce este GraphQL?

GraphQL este un standard adaptiv pentru API-uri și oferă un timp de rulare pentru a îndeplini acele interogări. GraphQL oferă detalii complete și rezonabile ale informațiilor din API-ul dvs. Este dezvoltat cu o ideologie de „Cereți ceea ce aveți nevoie și obțineți exact asta”. Acesta permite clientului să preia răspunsul exact de care are nevoie de la API, nimic mai mult - nimic mai puțin.

Avantajele GraphQL

Câteva dintre multele avantaje ale utilizării GraphQL pentru Drupal -

  1. Dezvoltare frontend mai rapidă

    Accentuați rapid pe aplicații fără a aștepta noi puncte finale backend. Îmbunătățiți preluarea datelor și întreținerea codului prin obținerea datelor în forma de care aveți nevoie.
  2. Cereți ce aveți nevoie și obțineți exact asta

    Oferă răspunsul exact cerut de client. Acesta returnează întotdeauna un rezultat previzibil. Aplicațiile care utilizează GraphQL sunt, de asemenea, stabile, deoarece aplicația controlează datele pe care le primește, nu serverul.
  3. Utilizați datele dvs. existente

    GraphQL poate fi utilizat cu orice infrastructură existentă, de exemplu REST, SOAP sau baza de date existentă sau orice altceva. Vă permite să interogați toate datele într-o singură cerere și vă oferă un răspuns previzibil curățat.
  4. Mai puțini octeți și călătorii dus-întors

    Folosind GraphQL, toate datele necesare pot fi preluate folosind o singură interogare. Face
    aplicarea mai rapidă.
drupal-graphql

GraphQL cu Drupal 8

REST vs JSON:API vs GraphQL

Dacă le comparăm pe aceste trei în funcție de eficiența cererii, JSON:API și GraphQL sunt excelente. Pentru că într-o singură solicitare JSON:API și GraphQl pot servi toate răspunsurile necesare. În cazul JSON:API, uneori trebuie să personalizăm răspunsul, dar când vine vorba de GraphQL, servește doar ceea ce avem nevoie. REST este mai lent în comparație cu acestea, deoarece sunt necesare cereri multiple pentru a satisface nevoile comune.

În ceea ce privește simplitatea operațională și implementarea, REST este cel mai ușor, există de ceva vreme. JSON:API funcționează de asemenea cu CDN și proxy invers. Pentru GraphQL este nevoie de o infrastructură suplimentară și sunt necesare biblioteci client pentru ao implementa.

Este mai ușor să utilizați memoria cache web în REST și JSON:API în comparație cu GraphQL. În GraphQL, există un singur punct final (de cele mai multe ori un punct final HTTP POST) unde sunt trimise toate interogările. Deoarece fiecare interogare poate fi diferită, este mai greu să utilizați acest tip de cache.

Specificația Drupal GraphQL acceptă automat operațiuni în bloc/batch pentru mutațiile pe care le-ați implementat deja, în timp ce specificația JSON:API nu. Capacitatea de a efectua operațiuni de scriere în lot poate fi importantă.

Instalarea GraphQL pentru Drupal 8

Modulul Drupal GraphQL acceptă toate specificațiile GraphQL și poate fi folosit pentru a construi și a expune scheme GraphQL. Cea mai recentă versiune alfa a modulului Drupal 8 în versiunea 8.x-4 oferă posibilitatea modulelor Drupal de a extinde schema cu un plugin.

Aici puteți instala modulul Drupal GraphQL de la - https://www.drupal.org/project/graphql
Puteți instala folosind comanda composer.

 compozitorul necesită „drupal/graphql:^3.0”

Vă va oferi două module GraphQL Core și GraphQL . Trebuie să activați ambele module. Îl puteți activa folosind drush, de ex

 drush en graphql
drush en graphql_core

Interogări cu Drupal GraphQL

Modulul Drupal GraphQL oferă un instrument numit GraphiQL . Este un instrument puternic și are o interfață de utilizare interactivă cu funcționalități precum completarea automată. Folosind acest instrument, puteți rula interogări și puteți obține rezultate. Navigați la – „ /graphql/explorer ” pentru interfață.

Veți obține o interfață de utilizare care arată astfel -

GraphQL-UI

GraphiQL UI

Pe panoul din stânga al acestei interfețe de utilizare puteți scrie o interogare, iar în partea dreaptă, veți vedea rezultatele ca o ieșire în format JSON. Făcând clic pe Documente în colțul din dreapta sus, veți obține documentația interogărilor disponibile. Secțiunea Variabilă de interogare din panoul din stânga jos poate fi utilizată pentru a transmite variabile de interogare.

Exemple

1.Noduri de interogare

Interogare-noduri-graphql

Drupal GraphQL - Noduri de interogare

2. Interogarea taxonomiilor

Drupal GraphQL - Interogarea taxonomiilor

Drupal GraphQL - Interogarea taxonomiilor


3. Interogarea rutelor

Drupal GraphQL - Interogarea rutelor

Drupal GraphQL - Interogarea rutelor

4. Fragmente de interogare

Drupal GraphQL - Fragmente de interogare

Drupal GraphQL - Fragmente de interogare

5.Filtre

Drupal GraphQL - Filtre

Drupal GraphQL - Filtre

6. Filtre cu conjuncție

Drupal GraphQL - Filtre cu conjuncție

Drupal GraphQL - Filtre cu conjuncție

Alți operatori disponibili sunt:

  • EGAL
  • NU ESTE EGAL
  • MAI MIC CA
  • SMALLER_THAN_OR_EQUAL
  • MAI MARE CA
  • GREATER_THAN_OR_EQUAL
  • ÎN
  • NU ÎN
  • CA
  • NU CA
  • ÎNTRE
  • NOT_INTRE
  • IS_NULL
  • IS_NOT_NULL

Conjuncțiile pot avea două valori

  • ȘI
  • SAU

De asemenea, puteți utiliza Grupuri pentru a scrie interogări mai complexe.

7.Variabile GraphQL

Drupal GraphQL - Variabile

Drupal GraphQL - Variabile

Mutații

În GraphQL, o mutație este terminologia folosită ori de câte ori doriți să adăugați, să modificați sau să ștergeți date stocate pe server. În acest caz, Drupal. Din păcate, modulul nu include o modalitate de a efectua mutații comune din cutie, din cauza unor cerințe tehnice ale GraphQL.
Exemplu de cod pentru crearea, ștergerea, actualizarea și încărcarea fișierelor, poate fi găsit aici: https://github.com/drupal-graphql/graphql-examples

Exemplu de mutație:

Drupal GraphQL - Exemplu de mutație

Drupal GraphQL - Exemplu de mutație

Drupal GraphQL cu Twig

Utilizarea Drupal GraphQL cu Twig poate îmbunătăți semnificativ performanța site-ului dvs. Iată cum – Când injectați date în șablonul Twig, puteți prelua toate datele necesare folosind un singur apel API. Mai mult, deoarece clientul controlează datele pe care le primește și nu serverul, face procesul și mai rapid.

Pentru a folosi Drupal GraphQL cu Twig avem nevoie de modulul GraphQL Twig. Pentru a-l descărca și activa, utilizați următoarele comenzi:

 compozitorul necesită „drupal/graphql_twig:^1.0”
drush en graphql_twig

Și apoi puteți utiliza interogarea GraphQL pe site-ul dvs. de ex

 {#graphql
interogare {
  admin:userById(id: „1”) {
    uid
    Nume
  }
  utilizator:currentUserContext {
    uid
  }
}
#}

Veți obține datele răspunsului în variabila GraphQL.