-
-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Денормализованная выдача
Выдаётся всегда дерево в денормализованной форме. Если в графе есть циклы, то выдача может легко увеличиться на порядок за счёт дублирования поддеревьев.
Представление данных в виде слепков
Это несовместимо с с бесконфликтными алгоритмами слияния, так как теряет мета-информацию об изменениях.
Нестандартизированные параметры
GQL - это просто RPC. offset, limit, filter, sort и прочее реализуется всеми по разному. Из-за чего нельзя написать универсальный инструмент работы с разными АПИ.
DevTools браузера мало полезны
Все запросы POST-ом (или экранированным GET), все ответы с кодом 200. Соответственно браузер никак не помогает всё это дебажить.
HTTP кеширование не работает
RPC в принципе не кешируется. В лучшем случае кеширование реализуется клиентской библиотекой. Кеширование на прокси идёт лесом.
Много сложностей
Все эти типы, фрагменты, мутации и пр на собственном ограниченном языке, требующем писать много кода для простых вещей. Дженерики? Плиморфизм для мутаций? Переиспользование кода между запросами и мутациями? "Вам это не нужно". Без библиотек и спец-инструментов использовать очень сложно.
Нет загрузки файлов
Разве что через упаковку их в BASE64 и посылки текстом.
Потенциальный DOS
Легко простым запросом выгрузить на клиент всю базу, что положит сервер. Дизайн запросов такой, что сложно сделать ограниченное число запросов к базе на запрос к северу. А неограниченное число запросов к базе быстро убьёт производительность. Расстановка индексов становится нетривиальной задачей.
Кривой nullable
Все поля nullable по умолчанию. При этом невозможно отличить null от отсутствия поля, что важно при мутациях, чтобы не стирать данные, если поле не передано.