Vai al contenuto

GraphQL

Da Wikipedia, l'enciclopedia libera.
GraphQL
linguaggio di programmazione
AutoreMeta Platforms, GraphQL Foundation e comunità
Data di origine2015
Utilizzointerrogazione database, manipolazione di dati
Estensioni comunigraphql
Influenzato daJSON, HTTP
Implementazione di riferimento
Implementazioneimplementazioni in Java, JavaScript, Ruby, Scala e altri
Sistema operativomultipiattaforma
LicenzaBSD 3-clausole
Sito webgraphql.org/ e spec.graphql.org/

GraphQL è un linguaggio di interrogazione e manipolazione dei dati open-source per API e un runtime per soddisfare query con dati esistenti[1]. GraphQL fu sviluppato internamente a Facebook nel 2012, prima di esser reso pubblico nel 2015[2]. Il 7 novembre 2018, la gestione del progetto GraphQL fu spostata da Facebook all'allora neonata GraphQL Foundation, ospitata dalla Linux Foundation[3][4]. Sin dal 2012, la crescita di GraphQL è stata affiancata dall'adozione di un calendario operativo fissato con precisione da Lee Byron, creatore del linguaggio[5]. 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[6][7][8]. 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)[9]. I server GraphQL sono disponibili per svariati linguaggi, tra cui Haskell[10], JavaScript[11], Perl[12], Python[13], Ruby, Java, C++[14], C#, Scala, Go, Rust, Elixir[15], Erlang, PHP, R, D[16] e Clojure.

Il 9 febbraio 2018, il GraphQL Schema Definition Language (SDL) diventa parte delle specifiche[17].

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
            }
        ]
    }
}
  1. (EN) GraphQL: A query language for APIs., su graphql.org.
  2. (EN) GraphQL: A data query language, su engineering.fb.com, 14 settembre 2015. URL consultato il 16 maggio 2021.
  3. (EN) Facebook's GraphQL gets its own open-source foundation, in TechCrunch. URL consultato il 7 novembre 2018.
  4. (EN) The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL - The Linux Foundation, in The Linux Foundation, 6 novembre 2018. URL consultato il 7 novembre 2018 (archiviato dall'url originale il 28 gennaio 2019).
  5. Art Anthony, Is GraphQL Moving Toward Ubiquity?, su NordicAPIs.
  6. (EN) GraphQL vs REST: Overview, in Phil Sturgeon. URL consultato il 25 novembre 2018.
  7. (EN) Why use GraphQL, good and bad reasons, in Honest Engineering, 4 agosto 2018. URL consultato il 26 novembre 2018 (archiviato dall'url originale il 26 novembre 2018).
  8. (EN) GraphQL Fundamentals, su Howto GraphQL. URL consultato il 4 luglio 2018.
  9. (EN) GraphQL, su facebook.github.io, Facebook. URL consultato il 4 luglio 2018 (archiviato dall'url originale il 18 luglio 2018).
  10. (EN) Hasura – Instant Realtime GraphQL on Postgres, su Hasura. URL consultato il 24 ottobre 2019.
  11. (EN) GraphQL js, su github.com. URL consultato il 18 maggio 2021.
  12. (EN) GraphQL - Perl implementation of GraphQL, su metacpan.org. URL consultato il 18 maggio 2021.
  13. Graphene, su graphene-python.org. URL consultato il 18 giugno 2017.
  14. (EN) graphql/libgraphqlparser, su github.com, GraphQL, 27 maggio 2020. URL consultato il 30 maggio 2020.
  15. (EN) Absinthe: The GraphQL toolkit for Elixir, su absinthe-graphql.org. URL consultato il 19 luglio 2018.
  16. (EN) graphqld, su code.dlang. URL consultato il 18 maggio 2021.
  17. (EN) GraphQL SDL included in Github repository, su github.com. URL consultato il 18 maggio 2021.

Voci correlate

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàGND (DE) 1223051153
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica