Size: a a a

GraphQL — русскоговорящее сообщество

2021 September 18

A

Albert in GraphQL — русскоговорящее сообщество
По поводу 4хх мнения разделяются
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
окей, у меня именно бизнес-ошибка, она должна быть на верхнем уровне, сразу под data или же внутри projects?
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
то есть все вообще бизнес-ошибки должны быть на верхнем уровне или же должны быть "размазаны" и выводиться там, где случились?
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
то есть в данном случае если пользователь запросил только данные о себе без проектов, ошибки не будет, а если запросил с проектами - будет, это бизнес-ошибка (допустим, он помечен как сотрудник компании и не может иметь проектов вообще), это нужно выводить сразу под data или внутри projects?
источник

A

Albert in GraphQL — русскоговорящее сообщество
Я бы использовалUnion как было выше. Иначе у вас некоторые поля user могут быть битыми, придется их во-первых делать nullable, во-вторых добавится лишняя работа клиенту каждый раз парсить что за ошибка и смотреть есть ли данные. С одной стороны это хорошо, ведь частичные данные лучше чем ничего. С другой стороны  лишняя работа на клиенте. Всё зависит от сложности и потребностей
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
с точки зрения работы на клиенте, полагаю, парсить ошибки на верхнем уровне всё же проще, разве нет?
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
то есть если все вообще ошибки будут в 1 месте
источник

A

Albert in GraphQL — русскоговорящее сообщество
Верхний от вас или от меня?
источник

A

Albert in GraphQL — русскоговорящее сообщество
Не понимаю что имеется в виду :)
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
сразу внутри data - верхний
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
data[projects] - уже не верхний
источник

A

Albert in GraphQL — русскоговорящее сообщество
Да. Проще.
источник

A

Albert in GraphQL — русскоговорящее сообщество
Либо смотреть _typename
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
вообще, в Ariadne я не могу нормально сделать резолвер на projects и с него передать ошибки на верхний уровень и поэтому я хотел создать там Issue о том, что было бы лучше эту фичу добавить, но мне бы хотелось на что-то сослаться, мб на какую-нибудь статью в каком-нибудь блоге про то, что все вообще бизнес-ошибки лучше выносить на верхний уровень (под data, например), а не делать везде вообще для всех сущностей вот этот вот ProjectResponse вместо Project
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
существуют ли такие статьи, где советуют вот эти ошибки, то есть __typename == "OperationError" делать сразу под 'data', а не где-нибудь внутри?..
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
чтобы не пришлось вот так всё дерево проверять на OperationError при погружении вглубь
источник

AO

Alexander Ovchinniko... in GraphQL — русскоговорящее сообщество
ну, или же, наоборот, мб есть статья, где написано, что это как раз в GraphQL лучшая практика и так и надо делать, а я не прав?..
источник

TL

Timur Lastaev in GraphQL — русскоговорящее сообщество
Разве для всех типов ошибок может быть другое место кроме как res.errors?
источник

TL

Timur Lastaev in GraphQL — русскоговорящее сообщество
Например сделать для разных типов ошибок классы при необходимости с extension?
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Ваше допущение неверно, что ошибок в программном коде может быть много. Один throw Exception и привет резолверу.

Так что советую поменять errors на error.
источник