GraphQL
GraphQL è un linguaggio di interrogazione e manipolazione dei dati open-source per API e un runtime per soddisfare query con dati esistenti. GraphQL fu sviluppato internamente a Facebook nel 2012, prima di esser reso pubblico nel 2015. Il 7 novembre 2018, la gestione del progetto GraphQL fu spostata da Facebook all'allora neonata GraphQL Foundation, ospitata dalla Linux Foundation. Sin dal 2012, la crescita di GraphQL è stata affiancata dall'adozione di un calendario operativo fissato con precisione da Lee Byron, creatore del linguaggio. L'obiettivo di Byron è rendere GraphQL onnipresente nelle varie piattaforme del web.
Fornisce un approccio per sviluppare web API ed è stato comparato con l'architettura REST e quelle di altri web service. Permette ai client di definire la struttura dei dati richiesti, con la quale poi il server ritornerà i dati richiesti, evitando la restituzione di grandi moli in eccesso di dati, ma ciò potrebbe avere implicazioni sull'efficacia del web caching dei risultati delle query. La flessibilità e la ricchezza di questo linguaggio d'interrogazione aggiunge anche un livello tale di complessità che potrebbe non essere utile qualora si debba creare API semplici. A dispetto del nome, GraphQL non prevede la ricchezza delle operazioni realizzabili a tutti gli effetti nelle basi di dati a grafo come Neo4j, o anche la dialettica di SQL che supporta la chiusura transitiva. Per esempio, un'interfaccia GraphQL che riporta i genitori di una singola entità non è capace di restituire, con una singola query, l'insieme di tutti i loro antenati.
GraphQL è costituito da un sistema di tipi, linguaggio d'interrogazione e semantica di esecuzione, validazione statica e introspezione del tipo. Supporta la lettura, scrittura (mutazione) e sottoscrittura per cambiare i dati (gli aggiornamenti in tempo reale — per lo più comunemente implementati usando i Websocket). I server GraphQL sono disponibili per svariati linguaggi, tra cui Haskell, JavaScript, Perl, Python, Ruby, Java, C++, C#, Scala, Go, Rust, Elixir, Erlang, PHP, R, D e Clojure.
Il 9 febbraio 2018, il GraphQL Schema Definition Language (SDL) diventa parte delle specifiche.
Esempio
Richiesta POST:
{
orders {
id
productsList {
product {
name
price
}
quantity
}
totalAmount
}
}
Risposta:
{
"data": {
"orders": [
{
"id": 1,
"productsList": [
{
"product": {
"name": "orange",
"price": 1.5
},
"quantity": 100
}
],
"totalAmount": 150
}
]
}
}
Note
Voci correlate
Collegamenti esterni
- (EN) Sito ufficiale, su graphql.org.
- (EN) Sito ufficiale, su spec.graphql.org.
- (EN) GraphQL, su GitHub.
- Repository sorgenti di GraphQL, su github.com.