GraphQL con Drupal 8: la guida di tutto ciò che serve (con esempi!)
Pubblicato: 2019-12-17GraphQL parla con Drupal in HTTP e gli output sono più strutturati che mai!
Oggi, le grandi esperienze dei clienti iniziano con ottimi contenuti. Contenuti resi disponibili ovunque. Con l'iniziativa API-first di Drupal 8, il contenuto gestito da Drupal può essere facilmente utilizzato da altri sistemi su HTTP. REST (Representational State Transfer) fornisce uno standard di progettazione per le API. Tuttavia, con le applicazioni client sempre più complesse e impegnative, gli sviluppatori hanno bisogno di una soluzione più moderna ed efficace.

GraphQL è nato dalla richiesta di un'interazione client-server più flessibile e potente. È un linguaggio di interrogazione sofisticato e una macchina di esecuzione. Nel 2012 Facebook ha creato la specifica per esso, che descrive le sue capacità e i requisiti dei modelli di dati per le applicazioni headless.
Cos'è GraphQL?
GraphQL è uno standard adattivo per le API e fornisce un runtime per soddisfare tali query. GraphQL fornisce dettagli completi e ragionevoli delle informazioni nella tua API. È sviluppato con un'ideologia di "Chiedi ciò di cui hai bisogno e ottieni esattamente quello". Consente al cliente di recuperare la risposta esatta di cui ha bisogno dall'API, niente di più, niente di meno.
Vantaggi di GraphQL
Alcuni dei molti vantaggi dell'utilizzo di GraphQL per Drupal -
- Sviluppo frontend più veloce
Enfatizza rapidamente le applicazioni senza attendere nuovi endpoint di backend. Migliora il recupero dei dati e la manutenzione del codice ottenendo i dati nella forma che ti serve. - Chiedi quello che ti serve e ottieni esattamente quello
Fornisce la risposta esatta richiesta dal cliente. Restituisce sempre un risultato prevedibile. Anche le applicazioni che utilizzano GraphQL sono stabili perché l'applicazione controlla i dati che riceve, non il server. - Usa i tuoi dati esistenti
GraphQL può essere utilizzato con qualsiasi infrastruttura esistente, ad esempio REST, SOAP o database esistente, o qualsiasi altra cosa. Ti consente di interrogare tutti i dati in un'unica richiesta e ti fornisce una risposta prevedibile pulita. - Meno byte e roundtrip
Utilizzando GraphQL tutti i dati richiesti possono essere recuperati utilizzando una singola query. fa il
applicazione più veloce.

GraphQL con Drupal 8
REST vs JSON:API vs GraphQL
Se confrontiamo questi tre in base all'efficienza della richiesta, JSON:API e GraphQL sono eccellenti. Perché in una singola richiesta JSON:API e GraphQl possono servire tutte le risposte richieste. Nel caso di JSON:API, a volte dobbiamo personalizzare la risposta, ma quando si tratta di GraphQL, serve solo ciò di cui abbiamo bisogno. REST è più lento rispetto a questi, perché sono necessarie più richieste per soddisfare le esigenze comuni.
In termini di semplicità operativa e implementazione, REST è il più semplice, è lì da un po' di tempo. JSON:API funziona immediatamente anche con CDN e proxy inversi. Per GraphQL è necessaria un'infrastruttura aggiuntiva e sono necessarie librerie client per implementarla.
È più facile utilizzare la cache web in REST e JSON:API rispetto a GraphQL. In GraphQL, c'è un solo endpoint (il più delle volte un endpoint HTTP POST) a cui vengono inviate tutte le query. Poiché ogni query può essere diversa, è più difficile utilizzare questo tipo di memorizzazione nella cache.
La specifica Drupal GraphQL supporta automaticamente operazioni bulk/batch per le mutazioni che hai già implementato, mentre la specifica JSON:API no. La capacità di eseguire operazioni di scrittura batch può essere importante.
Installazione di GraphQL per Drupal 8
Il modulo Drupal GraphQL supporta tutte le specifiche GraphQL e può essere utilizzato per creare ed esporre schemi GraphQL. L'ultima versione alpha del modulo Drupal 8 nella versione 8.x-4 offre ai moduli Drupal la possibilità di estendere lo schema con un plug-in.
Qui è dove puoi installare il modulo Drupal GraphQL da - https://www.drupal.org/project/graphql
Puoi installare usando il comando del compositore.
il compositore richiede 'drupal/graphql:^3.0'
Ti fornirà due moduli GraphQL Core e GraphQL . Devi abilitare entrambi i moduli. Puoi abilitarlo usando drush ad es
drush en graphql drush en graphql_core
Query con Drupal GraphQL
Il modulo Drupal GraphQL fornisce uno strumento chiamato GraphiQL . È uno strumento potente e ha un'interfaccia utente interattiva con funzionalità come il completamento automatico. Utilizzando questo strumento, puoi eseguire query e ottenere output. Passare a - " /graphql/explorer " per l'interfaccia.
Otterrai un'interfaccia utente simile a questa:


Interfaccia utente di GraphiQL
Sul pannello laterale sinistro di questa interfaccia utente puoi scrivere una query e sul lato destro vedrai i risultati come output in formato JSON. Facendo clic su Documenti nell'angolo in alto a destra, otterrai la documentazione delle query disponibili. La sezione Variabili di query nel pannello in basso a sinistra può essere utilizzata per passare le variabili di query.
Esempi
1. Interrogazione dei nodi

Drupal GraphQL - Interrogazione dei nodi
2. Interrogare le tassonomie

Drupal GraphQL - Interrogazione di tassonomie
3. Interrogazione dei percorsi

Drupal GraphQL - Interrogazione dei percorsi
4. Frammenti di query

Drupal GraphQL - Frammenti di query
5.Filtri

Drupal GraphQL - Filtri
6. Filtri con congiunzione

Drupal GraphQL - Filtri con congiunzione
Altri operatori disponibili sono:
- PARI
- NON UGUALE
- PIÙ PICCOLO DI
- SMALLER_THAN_OR_EQUAL
- PIÙ GRANDE DI
- MAGGIORE O UGUALE
- IN
- NON IN
- PIACE
- NON COME
- TRA
- NON IN MEZZO
- È ZERO
- IS_NOT_NULL
Le congiunzioni possono avere due valori
- E
- O
Puoi anche utilizzare Gruppi per scrivere query più complesse.
7.Variabili GraphQL

Drupal GraphQL - Variabili
mutazioni
In GraphQL, una mutazione è la terminologia utilizzata ogni volta che si desidera aggiungere, modificare o eliminare i dati archiviati sul server. In questo caso Drupal. Sfortunatamente, il modulo non include un modo per eseguire mutazioni comuni fuori dagli schemi a causa di alcuni requisiti tecnici di GraphQL.
Il codice di esempio per la creazione, l'eliminazione, l'aggiornamento e il caricamento di file è disponibile qui: https://github.com/drupal-graphql/graphql-examples
Esempio di mutazione:

Drupal GraphQL - Esempio di mutazione
Drupal GraphQL con Twig
L'utilizzo di Drupal GraphQL con Twig può migliorare significativamente le prestazioni del tuo sito web. Ecco come: quando inietti i dati nel modello Twig, puoi recuperare tutti i dati richiesti utilizzando una singola chiamata API. Inoltre, poiché il client controlla i dati che ottiene e non il server, rende il processo ancora più veloce.
Per usare Drupal GraphQL con Twig abbiamo bisogno del modulo GraphQL Twig. Per scaricarlo e abilitarlo, usa i seguenti comandi:
il compositore richiede 'drupal/graphql_twig:^1.0' drush en graphql_twig
E poi puoi usare la query GraphQL nel tuo sito web, ad es
{#graphql
domanda {
admin:userById(id: "1") {
uid
nome
}
utente:currentUserContext {
uid
}
}
#}Otterrai i dati di risposta nella variabile GraphQL.
