GraphQL er veldig populært, veldig kraftig, men det er fundamentalt annerledes enn OData. Så det er ikke slik at noen av dem er absolutt bedre enn de andre.
Det er noen poeng jeg kan forstå.
OData = SQL i URL
OData var en måte å serialisere en SQL-setning til en URL
Det er vanskelig å begrense spørringsevnen på klientsiden.
OData Standardisert
ODatas spesifikasjon er dens styrke, akkurat som RPC gjør med RESTful. RESTful har spesifikasjoner og er lett å forstå, men det er ikke lett å uttrykke alt. RPC kan uttrykke alt, men det er for ustandardisert.
Feil i OData
OData er vanligvis tettere enn databaseskjema-tilstanden (så det er som SQL Query), og når skjemaet er endret, er det vanskeligere å vedlikeholde den gamle versjonen.
OData foretrekker enhetlig administrasjon, og det er vanskelig å optimalisere for spesielle tilfeller.
Best beskrevet
OData er som SQL Query, GraphQL er som lagret prosedyre. Du smaker sakte.
Derfor må disse to eksistere side om side og utfylle hverandre.
sammendrag
OData er som SQL Query, GraphQL er som lagret prosedyre.
OData er som RESTful, og GraphQL er som RPC
Når du ønsker enkel unification, vil du finne RESTFul flott, SQL Query er tilstrekkelig, OData er bra.
Men når du har spesielle situasjoner og ikke kan bruke en enkel metode, RPC, lagret prosedyre, fremhever GraphQL sin sjarm.
La oss se på bruksscenariene for begge sider. OData er tilbøyelig til å være et API for bedriftsapplikasjoner, som SAP. Vanligvis det enklere, relasjonelle databasemønsteret.
GraphQL er en Internett-applikasjon, et eksponert API, og en hvilken som helst type data (som NoSQL)
Så oppsummert kan GraphQL uttrykke mer (friere) enn OData, OData har regler (flere begrensninger) enn GraphQL
Hvilken av dem er det, eller GraphQL for den ytre verden, eller OData for den interne, det avhenger virkelig av prosjektet som bruker det.