GraphQL je veľmi populárny, veľmi výkonný, ale zásadne sa líši od OData. Takže nejde o to, že by niektorý bol absolútne lepší ako druhý.
Existuje niekoľko bodov, ktoré chápem.
OData = SQL v URL
OData bola spôsob, ako serializovať SQL príkaz do URL adresy
Je ťažké obmedziť schopnosť dotazovania na strane klienta.
OData štandardizovaná
Špecifikácia OData je jej sila, rovnako ako RPC RESTful. RESTful má špecifikácie a je ľahko pochopiteľný, ale nie je jednoduché vyjadriť všetko. RPC dokáže vyjadriť všetko, ale je príliš neštandardizované.
Nedostatky OData
OData je zvyčajne prísnejšia než stav databázovej schémy (takže je to ako SQL Query) a keď sa schéma zmení, je ťažšie udržať starú verziu.
OData uprednostňuje jednotné riadenie a je ťažké optimalizovať pre špeciálne prípady.
Najlepšie opísané
OData je ako SQL Query, GraphQL je ako uložená procedúra. Chutíš pomaly.
Preto musia tieto dve veci koexistovať a navzájom sa dopĺňať.
súhrn
OData je ako SQL Query, GraphQL je ako uložená procedúra.
OData je ako RESTful a GraphQL je ako RPC
Keď chcete jednoduchú integráciu, nájdete RESTFul skvelý, SQL Query je postačujúci, OData je dobrá.
Ale keď máte špeciálne situácie a nemôžete použiť jednoduchú metódu, RPC, uloženú procedúru, GraphQL vyzdvihuje svoje čaro.
Pozrime sa na scenáre používania oboch strán. OData je skôr API pre podnikové aplikácie, ako je SAP. Zvyčajne jednoduchší, relačný databázový vzor.
GraphQL je internetová aplikácia, sprístupnené API a akýkoľvek typ dát (napríklad NoSQL)
Takže v skratke, GraphQL dokáže vyjadriť viac (voľnejšie) než OData, OData má pravidlá (viac obmedzení) než GraphQL
Ktorý z nich to je, alebo GraphQL pre vonkajší svet, alebo OData pre interný, to naozaj závisí od projektu, ak to použijete.