Приветствую, Павел!
Во-первых, спасибо за видеолекции и статьи! Много нужного извлек оттуда.
И вроде разработка на графе идет нормально. Но вот обработка ошибок - это боль страшная.
И если введение union-типов для обозначения "проблем" решает одну часть боли. И на клиенте вроде удобно, и в документации отображается. Все хорошо.
Но вот другой момент, никак не дает покоя. А именно, ответы графа (ошибки), в случае несоответствия схемы присланной клиентом и той, что на сервере.
Например, отсутствие обязательного поля или неправильный тип данных поля. Это ж как бы одна из килер-фич графа. Проверять еще до резолверов присланные данные и реагировать. Но реакция странная)
Граф оформляет проблему в ошибке тупо в виде текстового описания. Например, забыли обязательное поле "name", получи - 'Field "login" argument "name" of type "String!" is required but not provided.'
И как тут на клиенте понимать, что произошло, на уровне логики, непонятно. Не парсить же этот текст)
И пока решение такое, убрал в схеме эти восклицательные знаки почти везде и проверяю обязательность полей на уровне резолверов, стандартными средствами валидации ларавеля. Оттуда уже прилетают нормальные ошибки валидации, которые более-менее научил клиент распознавать и решать что с ними делать. Но в этом случае пропадает эта фишка графа. И зачем тогда она нужна)
Может есть какие мысли на этот счет? Думаю не один я тут с такой заморочкой вожусь)