GraphQL est très populaire, très puissant, mais il est fondamentalement différent d’OData. Donc ce n’est pas que l’un soit absolument meilleur que l’autre.
Il y a quelques points que je peux comprendre.
OData = SQL dans l’URL
OData était un moyen de sérialiser une instruction SQL en URL
Il est difficile de limiter la capacité de requête côté client.
OData Standardisé
La spécification d’OData est sa force, tout comme RPC le fait pour RESTful. RESTful a des spécifications et est facile à comprendre, mais il n’est pas facile d’exprimer tout. Le RPC peut tout exprimer, mais c’est trop non standardisé.
Défauts dans OData
OData est généralement plus précis que l’état du schéma de la base de données (c’est donc comme SQL Query), et une fois le schéma modifié, il est plus difficile de maintenir l’ancienne version.
OData privilégie la gestion unifiée, et il est difficile d’optimiser pour des cas particuliers.
Le mieux décrit
OData est comme SQL Query, GraphQL est comme une procédure stockée. Tu goûtes lentement.
Par conséquent, ces deux éléments doivent coexister et se compléter.
résumé
OData est comme SQL Query, GraphQL est comme une procédure stockée.
OData est comme RESTful, et GraphQL est comme RPC
Quand vous voulez une unification simple, vous trouverez RESTFul excellent, SQL Query suffit, OData est bon.
Mais lorsque vous avez des situations particulières et que vous ne pouvez pas utiliser une méthode simple, RPC, une procédure stockée, GraphQL met en avant son charme.
Examinons les scénarios d’utilisation des deux camps. OData est plutôt destiné à être une API pour les applications d’entreprise, telles que SAP. Généralement le modèle de base de données relationnel plus simple.
GraphQL est une application Internet, une API exposée, et tout type de données (comme NoSQL)
En résumé, GraphQL peut exprimer plus (plus librement) qu’OData, OData a des règles (plus de contraintes) que GraphQL
Lequel c’est, ou GraphQL pour le monde extérieur, ou OData pour l’interne, cela dépend vraiment du projet pour l’utiliser.