GraphQL - Introduzione

GraphQL è una tecnologia lato server open source sviluppata da Facebook per ottimizzare le chiamate API RESTful. È un motore di esecuzione e un linguaggio di query dei dati. In questo capitolo, discuteremo dei vantaggi dell'utilizzo di GraphQL.

Perché GraphQL

Le API RESTful seguono un approccio orientato alle risorse chiaro e ben strutturato. Tuttavia, quando i dati diventano più complessi, i percorsi si allungano. A volte non è possibile recuperare i dati con una singola richiesta. È qui che GraphQL torna utile. GraphQL struttura i dati sotto forma di un grafico con la sua potente sintassi di query per attraversare, recuperare e modificare i dati.

Di seguito sono riportati i vantaggi dell'utilizzo del linguaggio di query GraphQL:

Chiedi quello che vuoi e prendilo

Invia una query GraphQL alla tua API e ottieni esattamente ciò di cui hai bisogno. Le query GraphQL restituiscono sempre risultati prevedibili. Le applicazioni che utilizzano GraphQL sono veloci e stabili. A differenza dei servizi Restful, queste applicazioni possono limitare i dati che dovrebbero essere recuperati dal server.

Il seguente esempio ti aiuterà a capirlo meglio:

Consideriamo un oggetto di business Student con gli attributi id, firstName, lastName e collegeName . Supponiamo che un'applicazione per dispositivi mobili debba recuperare solo firstName e id . Se progettiamo un endpoint REST come / api / v1 / students , finirà per recuperare i dati per tutti i campi per un oggetto student . Ciò significa che i dati vengono recuperati in eccesso dal servizio RESTful. Questo problema può essere risolto utilizzando GraphQL.

Considera la query GraphQL fornita di seguito:

{
   students {
      id
      firstName
   }
}

Questo restituirà valori solo per i campi id e firstname. La query non recupererà i valori per altri attributi dell'oggetto studente. La risposta alla domanda illustrata sopra è come mostrato di seguito:

{
   "data": {
      "students": [
         {
            "id": "S1001",
            "firstName": "Mohtashim"
         },
         {
            "id": "S1002",
            "firstName": "Kannan"
         }
      ]
   }
}

Ottieni molte risorse in un'unica richiesta

Le query GraphQL aiutano a recuperare facilmente gli oggetti di business associati, mentre le tipiche API REST richiedono il caricamento da più URL. Le API GraphQL recuperano tutti i dati necessari alla tua applicazione in una singola richiesta. Le applicazioni che utilizzano GraphQL possono essere veloci anche su connessioni di rete mobile lente.

Consideriamo un altro oggetto aziendale, College , che ha gli attributi: nome e posizione. L' oggetto business Student ha una relazione di associazione con l'oggetto College. Se dovessimo utilizzare un'API REST per recuperare i dettagli degli studenti e del loro college, finiremo per fare due richieste al server come / api / v1 / students e / api / v1 / college . Ciò porterà a un recupero insufficiente dei dati con ogni richiesta. Pertanto, le applicazioni mobili sono costrette a effettuare più chiamate al server per ottenere i dati desiderati.

Tuttavia, l'applicazione mobile può recuperare i dettagli per gli oggetti Student e College in una singola richiesta utilizzando GraphQL.

Quella che segue è una query GraphQL per recuperare i dati:

{
   students{
      id
      firstName
      lastName
      college{
         name
         location
      }
   }
}

L'output della query precedente contiene esattamente quei campi che abbiamo richiesto come mostrato di seguito -

{
   "data": {
      "students": [
         {
            "id": "S1001",
            "firstName": "Mohtashim",
            "lastName": "Mohammad",
            "college": {
               "name": "CUSAT",
               "location": "Kerala"
            }
         },
         
         {
            "id": "S1002",
            "firstName": "Kannan",
            "lastName": "Sudhakaran",
            "college": {
               "name": "AMU",
               "location": "Uttar Pradesh"
            }
         },
         
         {
            "id": "S1003",
            "firstName": "Kiran",
            "lastName": "Panigrahi",
            "college": {
               "name": "AMU",
               "location": "Uttar Pradesh"
            }
         }
      ]
   }
}

Descrivi cosa è possibile fare con un sistema di tipi

GraphQL è fortemente tipizzato e le query si basano sui campi e sui tipi di dati associati. In caso di mancata corrispondenza del tipo in una query GraphQL, le applicazioni server restituiscono messaggi di errore chiari e utili. Ciò aiuta a eseguire il debug senza problemi e a rilevare facilmente i bug da parte delle applicazioni client. GraphQL fornisce anche librerie lato client che possono aiutare a ridurre la conversione e l'analisi esplicita dei dati.

Di seguito viene fornito un esempio dei tipi di dati Student e College :

type Query {
   students:[Student]
}

type Student {
   id:ID!
   firstName:String
   lastName:String
   fullName:String
   college:College
}

type College {
   id:ID!
   name:String
   location:String
   rating:Float
   students:[Student]
}

Muoviti più velocemente con potenti strumenti per sviluppatori

GraphQL fornisce ricchi strumenti di sviluppo per la documentazione e le query di test. GraphiQL è un ottimo strumento che genera la documentazione della query e del suo schema. Fornisce inoltre un editor di query per testare le API GraphQL e la capacità di completamento del codice intelligente durante la creazione di query.