GraphQL je zelo priljubljen, zelo zmogljiv, vendar je temeljno drugačen od OData. Torej ni tako, da bi bil eden popolnoma boljši od drugega.
Obstaja nekaj točk, ki jih lahko razumem.
OData = SQL v URL
OData je bil način serializacije SQL stavka v URL
Težko je omejiti možnost poizvedb na strani odjemalca.
OData standardizirana
Specifikacija OData je njena prednost, tako kot RPC uporablja RESTful. RESTful ima specifikacije in je enostaven za razumevanje, vendar ni enostavno izraziti vsega. RPC lahko izrazi vse, vendar je preveč nestandardiziran.
Pomanjkljivosti OData
OData je običajno bolj stroga kot stanje sheme baze podatkov (torej je podobna SQL Queryju), in ko se shema spremeni, je težje vzdrževati staro različico.
OData daje prednost enotnemu upravljanju in je težko optimizirati za posebne primere.
Najbolje opisano
OData je kot SQL Query, GraphQL je kot shranjena procedura. Počasi okušaš.
Zato morata ta dva sobivati in se medsebojno dopolnjevati.
Povzetek
OData je kot SQL Query, GraphQL je kot shranjena procedura.
OData je kot RESTful, GraphQL pa kot RPC
Ko želite preprosto poenotenje, boste našli RESTFul odličen, SQL Query je dovolj, OData je dobra.
A ko imate posebne situacije in ne morete uporabiti preproste metode, RPC, shranjene procedure, GraphQL poudari svoj čar.
Poglejmo si scenarije uporabe obeh strani. OData je nagnjena k API-ju za poslovne aplikacije, kot je SAP. Običajno je to preprostejši, relacijski vzorec baze podatkov.
GraphQL je internetna aplikacija, izpostavljen API in katerakoli vrsta podatkov (kot je NoSQL)
Torej, povzemimo, GraphQL lahko izrazi več (svobodneje) kot OData, OData ima pravila (več omejitev) kot GraphQL
Kateri je to, ali GraphQL za zunanji svet ali OData za notranji svet, res je odvisno od projekta, ali ga uporabljaš.