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.