GraphQL: un'alternativa alle intramontabili API REST, che permette al client di ricevere esattamente i dati richiesti, attraverso una gestione query-like delle richieste. Daremo uno sguardo al suo funzionamento e vedremo la sua implementazione lato server in .NET Core
3. Cenni storici e
motivazioni
Creato da Facebook nel 2012 per
migliorare le prestazioni delle loro app
Reso open source nel 2015 con
implementazione in javascript
Nel 2018 si stacca da Facebook e
diventa GraphQL Foundation
4. Cos’è GraphQL?
È un query language lato server per le API,
che permette al client di richiedere
solamente i dati di cui ha bisogno.
«Ask for what you need, get exactly that»
5. query {
persone {
nome
cognome
indirizzo {
città
}
}
}
{
"data": {
"persone": [
{
"nome": "Marcello"
"cognome": "Macchia"
"indirizzo":
{
"città": "Chieti"
}
}
]
}
}
HTTP POST
6. Cosa non è
GraphQL?
Non è JavaScript
Non è un Graph Query Language per
database
Non si lega a una sorgente dati
specifica
7.
8. Operazioni
Query: recupero dati
Mutations: modifica dati (create,
update, remove)
Subscriptions: aggiornamenti in tempo
reale
9. Componenti
Schema: descrive le funzionalità che il
client può utilizzare
Types: costituiscono l’insieme di dati su
cui effettuare query
Fields: singoli attributi che
costituiscono un Type
Resolvers: funzioni che risolvono le
operazioni in dati
10. Sistema basato
su tipi
I Types costituiscono lo schema e sono il
punto di contatto tra il client e il server.
Rappresentano il modo con cui il server
espone i dati verso l’esterno e il modo
attraverso cui il client li richiede.
I tipi base sono 5:
Scalar (Int, Float, String, Boolean e ID)
Enum
Object
Query
Mutation
11. Vantaggi
Un solo endpoint
Risolve overfetching e underfetching
Documentazione API autogenerata
Buona soluzione per sistemi complessi
e microservizi
12. Svantaggi
Aggiunge complessità lato server
Caching (client e server) molto
complesso
Risponde sempre 200
Non si può fare upload di file
13. Link utili
https://www.youtube.com/watch?v=0Aqy8h0W
3RQ&ab_channel=NDCConferences (Beyond
REST with GraphQL in .Net core - Irina Scurtu)
https://www.youtube.com/watch?v=Yy9wOhiW
BJg&t=718s&ab_channel=JetBrainsTV (An
Introduction to GraphQL for ASP.NET Core by
Michael Staib)
https://graphql.org/learn/
https://graphql-dotnet.github.io/docs/getting-
started/introduction
https://github.com/zaronc/graphQLDotNetSa
mple