GraphQL er meget populært, meget kraftfuldt, men det er fundamentalt anderledes end OData. Så det er ikke sådan, at nogen af dem er absolut bedre end den anden.
Der er nogle pointer, jeg kan forstå.
OData = SQL i URL
OData var en måde at serialisere en SQL-sætning til en URL
Det er svært at begrænse klientsidens forespørgselsmuligheder.
OData Standardiseret
ODatas specifikation er dens styrke, ligesom RPC gør med RESTful. RESTful har specifikationer og er let at forstå, men det er ikke let at udtrykke alt. RPC kan udtrykke alt, men det er for ustandardiseret.
Fejl i OData
OData er som regel strammere end databaseskema-tilstanden (så det er som SQL Query), og når skemaet først er ændret, er det sværere at vedligeholde den gamle version.
OData foretrækker samlet styring, og det er svært at optimere til særlige tilfælde.
Bedst beskrevet
OData er som SQL Query, GraphQL er som stored procedure. Du smager langsomt.
Derfor må disse to eksistere side om side og supplere hinanden.
resumé
OData er som SQL Query, GraphQL er som stored procedure.
OData er som RESTful, og GraphQL er som RPC
Når du vil have simpel unifikation, vil du finde RESTFul fantastisk, SQL Query er tilstrækkeligt, OData er godt.
Men når du har særlige situationer og ikke kan bruge en simpel metode, RPC, stored procedure, fremhæver GraphQL sin charme.
Lad os se på brugsscenarierne for begge sider. OData har tendens til at være et API til virksomhedsapplikationer, såsom SAP. Normalt det simplere, relationelle databasemønster.
GraphQL er en internetapplikation, et eksponeret API og en hvilken som helst type data (såsom NoSQL)
Så for at opsummere kan GraphQL udtrykke mere (friere) end OData, OData har regler (flere begrænsninger) end GraphQL
Hvilken af dem det er, eller GraphQL til den ydre verden, eller OData til det interne, afhænger virkelig af projektet, der bruger det.