GraphQL

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
GraphQL
linguaggio di programmazione
AutoreFacebook e relativa community
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
Sito webgraphql.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].

Esempio[modifica | modifica wikitesto]

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[modifica | modifica wikitesto]

  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]

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica