GraphQL - GraphQL
| Développeur(s) | Facebook et communauté |
|---|---|
| Première version | 14 septembre 2015 |
| Version stable | juin 2018
|
| Dépôt | github |
| Écrit en | Implémentations en Java , JavaScript , Ruby , Scala , autres. |
| Système opérateur | Multiplateforme |
| Site Internet | graphql |
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