GraphQL on väga populaarne, väga võimas, kuid see erineb põhimõtteliselt OData'st. Seega ei tähenda, et ükski neist oleks teistest absoluutselt parem.
On mõned punktid, mida ma saan aru.
OData = SQL URL-is
OData oli viis SQL-lause serialiseerimiseks URL-iks
Kliendi poole päringuvõimalusi on raske piirata.
OData standardiseeritud
OData spetsifikatsioon on selle tugevus, nagu RPC teeb RESTfulile. RESTfulil on spetsifikatsioonid ja see on lihtne mõista, kuid kõike on raske väljendada. RPC suudab kõike väljendada, aga see on liiga standardiseerimata.
OData vead
OData on tavaliselt tihedam kui andmebaasi skeemi olek (ehk see on nagu SQL Query), ja kui skeem on muudetud, on vana versiooni säilitamine keerulisem.
OData eelistab ühtset haldust ning erijuhtudel on seda raske optimeerida.
Kõige paremini kirjeldatud
OData on nagu SQL Query, GraphQL on nagu salvestatud protseduur. Sa maitsed aeglaselt.
Seetõttu peavad need kaks eksisteerima koos ja täiendama teineteist.
Kokkuvõte
OData on nagu SQL Query, GraphQL on nagu salvestatud protseduur.
OData on nagu RESTful ja GraphQL nagu RPC
Kui soovid lihtsat ühtlustamist, leiad, et RESTFul on suurepärane, SQL Query on piisav, OData hea.
Aga kui sul on eriolukorrad ja sa ei saa kasutada lihtsat meetodit, RPC-d, salvestatud protseduuri, siis GraphQL toob selle võlu esile.
Vaatame mõlema poole kasutusvõimalusi. OData kaldub olema API-ks ettevõtte rakendustele, nagu SAP. Tavaliselt on see lihtsam, relatsioonipõhise andmebaasi muster.
GraphQL on internetirakendus, avatud API ja mis tahes tüüpi andmed (näiteks NoSQL)
Kokkuvõttes suudab GraphQL väljendada rohkem (vabamalt) kui OData, ODatal on reeglid (rohkem piiranguid) kui GraphQL-il
Kumb see on, kas GraphQL välismaailma jaoks või OData sisemise maailma jaoks, see sõltub tõesti projektist, kas seda kasutada.