GraphQL jest bardzo popularny, bardzo potężny, ale zasadniczo różni się od OData. Więc nie chodzi o to, że którykolwiek jest absolutnie lepszy od drugiego.
Jest kilka kwestii, które mogę zrozumieć.
OData = SQL in URL
OData była sposobem na serializację instrukcji SQL na adres URL
Trudno jest ograniczyć możliwości zapytań po stronie klienta.
OData standaryzowana
Specyfikacja OData to jej mocna strona, tak jak RPC robi to z RESTful. RESTful ma specyfikacje i jest łatwy do zrozumienia, ale nie jest łatwo wyrazić wszystko. RPC może wyrażać wszystko, ale jest zbyt niestandaryzowane.
Wady OData
OData jest zwykle bardziej precyzyjna niż stan schematu bazy danych (czyli przypomina SQL Query), a po zmianie schematu trudniej jest utrzymać starą wersję.
OData preferuje zarządzanie zunifikowane i trudno jest zoptymalizować pod kątem szczególnych przypadków.
Najlepiej opisane
OData jest jak SQL Query, GraphQL to procedura przechowywana. Smakujesz powoli.
Dlatego te dwie rzeczy muszą współistnieć i się uzupełniać.
streszczenie
OData jest jak SQL Query, GraphQL to procedura przechowywana.
OData jest jak RESTful, a GraphQL jak RPC
Jeśli chcesz prostą unifikację, RESTFul jest świetny, SQL Query wystarczy, OData jest dobra.
Ale gdy masz specjalne sytuacje i nie możesz użyć prostej metody, RPC, procedury przechowywanej, GraphQL podkreśla swój urok.
Przyjrzyjmy się scenariuszom użytkowania obu stron. OData jest skłonna do zastosowania API dla aplikacji korporacyjnych, takich jak SAP. Zazwyczaj prostszy, relacyjny wzorzec bazy danych.
GraphQL to aplikacja internetowa, udostępnione API oraz dowolny rodzaj danych (takich jak NoSQL)
Podsumowując, GraphQL może wyrażać więcej (wolniej) niż OData, OData ma reguły (więcej ograniczeń) niż GraphQL
Który to jest, czy GraphQL dla świata zewnętrznego, czy OData dla wewnętrznego, to naprawdę zależy od projektu, czy go używasz.