GraphQL este foarte popular, foarte puternic, dar este fundamental diferit de OData. Deci nu este că vreunul ar fi absolut mai bun decât celălalt.
Sunt câteva puncte pe care le pot înțelege.
OData = SQL în URL
OData era o modalitate de a serializa o instrucțiune SQL într-un URL
Este dificil să limitezi capacitatea de interogare a clientului.
OData Standardizat
Specificația OData este punctul său forte, la fel cum RPC face cu RESTful. RESTful are specificații și este ușor de înțeles, dar nu este ușor să exprimi totul. RPC poate exprima totul, dar este prea nestandardizat.
Defecte în OData
OData este de obicei mai strâns decât starea schemei bazei de date (deci e ca SQL Query), iar odată ce schema este modificată, este mai greu să menții versiunea veche.
OData preferă managementul unificat și este dificil de optimizat pentru cazuri speciale.
Cel mai bine descris
OData este ca SQL Query, GraphQL este ca o procedură stocată. Gusti încet.
Prin urmare, aceste două trebuie să coexiste și să se completeze reciproc.
rezumat
OData este ca SQL Query, GraphQL este ca o procedură stocată.
OData este ca RESTful, iar GraphQL este ca RPC
Când vrei o unificare simplă, vei găsi RESTFul grozav, SQL Query este suficient, OData este bun.
Dar când ai situații speciale și nu poți folosi o metodă simplă, RPC, procedura stocată, GraphQL își evidențiază farmecul.
Să analizăm scenariile de utilizare ale ambelor părți. OData este înclinat să fie un API pentru aplicații enterprise, cum ar fi SAP. De obicei, tiparul mai simplu, relațional al bazei de date.
GraphQL este o aplicație pe Internet, un API expus și orice tip de date (cum ar fi NoSQL)
Deci, pe scurt, GraphQL poate exprima mai mult (mai liber) decât OData, OData are reguli (mai multe constrângeri) decât GraphQL
Care dintre ele este, sau GraphQL pentru lumea exterioară, sau OData pentru cele interne, depinde foarte mult de proiect pentru a-l folosi.