GraphQL is erg populair, erg krachtig, maar het is fundamenteel anders dan OData. Dus het is niet zo dat de ene absoluut beter is dan de ander.
Er zijn een paar punten die ik kan begrijpen.
OData = SQL in URL
OData was een manier om een SQL-statement te serialiseren in een URL
Het is moeilijk om de querymogelijkheden van de clientzijde te beperken.
OData gestandaardiseerd
OData's specificatie is zijn kracht, net zoals RPC dat doet voor RESTful. RESTful heeft specificaties en is gemakkelijk te begrijpen, maar het is niet makkelijk om alles uit te drukken. RPC kan alles uitdrukken, maar het is te ongestandaardiseerd.
Gebreken in OData
OData is meestal strakker dan de database schema-status (dus het is vergelijkbaar met SQL Query), en zodra het schema is veranderd, wordt het moeilijker om de oude versie te onderhouden.
OData geeft de voorkeur aan geïntegreerd beheer en het is moeilijk te optimaliseren voor speciale gevallen.
Het best beschreven
OData is als SQL Query, GraphQL is als stored procedure. Je proeft langzaam.
Daarom moeten deze twee naast elkaar bestaan en elkaar aanvullen.
samenvatting
OData is als SQL Query, GraphQL is als stored procedure.
OData is als RESTful, en GraphQL is als RPC
Als je eenvoudige unificatie wilt, zul je RESTFul geweldig vinden, SQL Query is voldoende, OData is goed.
Maar als je speciale situaties hebt en geen eenvoudige methode, RPC, stored procedure kunt gebruiken, benadrukt GraphQL zijn charme.
Laten we de gebruiksscenario's van beide partijen bekijken. OData is geneigd een API te zijn voor bedrijfsapplicaties, zoals SAP. Meestal het eenvoudigere, relationele databasepatroon.
GraphQL is een internetapplicatie, een blootgestelde API, en een welk type data dan ook (zoals NoSQL)
Samenvattend kan GraphQL meer (vrijere) uitdrukken dan OData, OData heeft regels (meer beperkingen) dan GraphQL
Welke het is, of GraphQL voor de buitenwereld, of OData voor de interne wereld, het hangt echt af van het project dat het gebruikt.