GraphQL - GraphQL

GraphQL
Logo GraphQL.svg
Développeur(s) Facebook et communauté
Première version 14 septembre 2015 ( 2015-09-14 )
Version stable
juin 2018 ( 2018-06 )
Dépôt github .com /graphql /graphql-spec
Écrit en Implémentations en Java , JavaScript , Ruby , Scala , autres.
Système opérateur Multiplateforme
Site Internet graphql .org

GraphQL est un langage de requête et de manipulation de données open source pour les API et un environnement d'exécution pour répondre aux requêtes avec des données existantes. GraphQL a été développé en interne par Facebook en 2012 avant d'être rendu public en 2015. Le 7 novembre 2018, le projet GraphQL a été transféré de Facebook à la nouvelle fondation GraphQL, hébergée par la Linux Foundation à but non lucratif . Depuis 2012, la montée en puissance de GraphQL a suivi avec précision le calendrier d'adoption défini par Lee Byron, le créateur de GraphQL. L'objectif de Byron est de rendre GraphQL omniprésent sur les plateformes Web.

Il fournit une approche pour développer des API Web et a été comparé et mis en contraste avec REST et d'autres architectures de services Web . Il permet aux clients de définir la structure des données requises, et la même structure des données est renvoyée par le serveur, empêchant ainsi le renvoi de quantités excessivement importantes de données, mais cela a des implications sur l'efficacité de la mise en cache Web des résultats de la requête. . La flexibilité et la richesse du langage de requête ajoutent également une complexité qui peut ne pas valoir la peine pour les API simples. Malgré son nom, GraphQL ne fournit pas la richesse des opérations de graphes que l'on pourrait trouver dans une base de données de graphes à part entière telle que Neo4j , ou même dans les dialectes de SQL qui prennent en charge la fermeture transitive . Par exemple, une interface GraphQL qui rapporte les parents d'un individu ne peut pas retourner, en une seule requête, l'ensemble de tous ses ancêtres.

GraphQL se compose d'un système de types, d'un langage de requête et d'une sémantique d'exécution, d'une validation statique et d' une introspection de type . Il prend en charge la lecture, l'écriture (mutation) et l'abonnement aux modifications apportées aux données (mises à jour en temps réel - le plus souvent implémentées à l'aide de Websockets ). Les serveurs GraphQL sont disponibles pour plusieurs langages, notamment Haskell , JavaScript , Perl , Python , Ruby , Java , C++ , C# , Scala , Go , Rust , Elixir , Erlang , PHP , R , D et Clojure .

Le 9 février 2018, le langage de définition de schéma GraphQL (SDL) est devenu une partie de la spécification.

Exemple

Demande POST :

{
    orders {
        id
        productsList {
            product {
                name
                price
            }
            quantity
        }
        totalAmount
    }
}

Réponse:

{
    "data": {
        "orders": [
            {
                "id": 1,
                "productsList": [
                    {
                        "product": {
                            "name": "orange",
                            "price": 1.5
                        },
                        "quantity": 100
                    }
                ],
                "totalAmount": 150
            }
        ]
    }
}

Voir également

Les références

Liens externes