GraphQL je velmi populární, velmi silný, ale zásadně se liší od OData. Takže to není tak, že by byl někdo absolutně lepší než druhý.
Mohu získat několik bodů.
OData = SQL in URL
OData byla způsob, jak serializovat SQL příkaz do URL
Je obtížné omezit schopnost dotazování na straně klienta.
OData standardizovaná
Specifikace OData je její síla, stejně jako RPC používá RESTful. RESTful má specifikace a je snadno pochopitelný, ale není snadné vše vyjádřit. RPC může vyjádřit vše, ale je příliš nestandardizované.
Nedostatky OData
OData je obvykle přísnější než stav databázového schématu (takže je to jako SQL Query), a jakmile se schéma změní, je těžší udržet starou verzi.
OData preferuje jednotné řízení a je obtížné optimalizovat pro speciální případy.
Nejlépe popsáno
OData je jako SQL Query, GraphQL je jako uložená procedura. Chutnáš pomalu.
Proto musí tyto dvě věci koexistovat a vzájemně se doplňovat.
shrnutí
OData je jako SQL Query, GraphQL je jako uložená procedura.
OData je jako RESTful a GraphQL je jako RPC
Pokud chcete jednoduchou unifikaci, najdete RESTFul skvělý, SQL Query je dostačující, OData je dobrá.
Ale když máte speciální situace a nemůžete použít jednoduchou metodu, RPC, uloženou proceduru, GraphQL zvýrazňuje své kouzlo.
Podívejme se na scénáře užívání obou stran. OData je určena jako API pro podnikové aplikace, jako je SAP. Obvykle jednodušší, relační databázový vzor.
GraphQL je internetová aplikace, vystavené API a jakýkoli typ dat (například NoSQL)
Takže shrnuto, GraphQL může vyjadřovat více (volněji) než OData, OData má pravidla (více omezení) než GraphQL
Který to je, nebo GraphQL pro vnější svět, nebo OData pro interní, to opravdu záleží na projektu, který to použijete.