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

Общаемся на темы, посвященные GraphQL и опыту его использования. Проблемы. Новости. Решения. Вам могут быть полезны: @apollo_ru, @react_js, @vuejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание в чате было полезным и комфортным.

352 members

Архив канала @graphql_ru 24 марта 2018 г.

02:10:22 ДП
User 530735
Всем привет. 

Есть во такой query
В случае ошибки я генерю GraphQLError. Но этот же еггог плюёт ошибку и в консоль. Это нормально или можно отключить вывод в консоль?

https://gist.github.com/dobeerman/ac6f3c1fe72809316e3a1e8b83c5ad4b
05:41:46 ПП
User 89599420
всем привет. кто-то можешь рассказать как обрабатывать клиенские ошибки в запросах?
для мутаций я сейчас просто возвращаю дополнительные филды status/success/errors
а что для гет-запросов? вшивать дополнительные данные про ошибки в результат запроса будет как-то не очень, а просто возовращать null не информативно...
05:42:47 ПП
User 91770096
есть 2 типа ошибок - графкьюэльные их сама либа возвращает - не те аргументы передал например
05:43:00 ПП
User 91770096
и скорее всего твой кейс это либо 404, 403
05:43:31 ПП
User 89599420
по спецификации графкл сервер всегда возвращает 500 или 200
05:43:50 ПП
User 91770096
он возвращает в теле ответа саму ошибку
05:43:58 ПП
User 91770096
если она графкюэльная
05:44:04 ПП
User 91770096
так вот
05:44:42 ПП
User 91770096
какой тип ошибки ты хочешь обработать?
05:44:51 ПП
User 91770096
403 зависит от бизнес логики - не всегда принято сообщать что ошибка 403 чтобы не палить сам факт существования данных
05:45:00 ПП
User 91770096
если это 404 то возвращается нулл
05:45:09 ПП
User 89599420
напрмер аутентификацию
05:45:10 ПП
05:45:57 ПП
User 91770096
ну это не гет запрос а мутация. в респонс мутации добавляется массив errors:
05:46:04 ПП
User 91770096
сам ответ будет нулл
05:46:15 ПП
User 91770096
код остается 200
05:46:26 ПП
User 91770096
в массиве errors ошибки
05:46:40 ПП
User 91770096
потому что то они могут быть разными
05:46:57 ПП
User 91770096
неверный логин или пароль, нет юзера - зависит от бизнес логики
05:47:15 ПП
User 89599420
не, хочет например юзер запросить список абстрактных продуктов
05:47:31 ПП
User 89599420
а чтоб получить нужно зайти
05:47:32 ПП
User 91770096
ну, какая ошибка произойдет?
05:47:40 ПП
05:47:45 ПП
User 91770096
ну как я сказал
05:47:49 ПП
User 91770096
это 403
05:48:01 ПП
User 91770096
но часто не принято возвращать явную ошибку
05:48:05 ПП
User 91770096
а вернуть нулл
05:48:09 ПП
User 89599420
403 это премишен денаед
05:48:12 ПП
User 89599420
когда юзер зашел
05:48:18 ПП
User 89599420
но нет прав
05:48:25 ПП
User 89599420
а тут просто не зашел
05:48:31 ПП
User 89599420
и нужно перевести на логин
05:48:38 ПП
User 89599420
но если будет просто нул
05:48:48 ПП
User 89599420
то как понять чевак не зашел
05:48:56 ПП
User 91770096
ну я тебя понял
05:49:04 ПП
User 91770096
тогда да надо явно указать
05:50:32 ПП
User 91770096
я бы всеравно массив еррорс захерачил.
05:50:58 ПП
User 91770096
хотя запрашивать его в каждом запросе геморро
05:51:07 ПП
User 91770096
мб все таки код кидать
05:51:15 ПП
User 91770096
и тогда и редирект будет
05:52:11 ПП
User 89599420
я б все добавлял в рутовский еррорс (который сиблинг data) и там указывал в каком филде какая проблема, но graphene не позволяет делать кастомный обьект с ошибками, только само сообщение изменить...
05:52:35 ПП
User 91770096
для кейса с редиректом можно кидать код я думаю
05:52:53 ПП
User 91770096
там проверка может идти даже не доходя до графа
05:52:58 ПП
User 91770096
вообще в другом месте
05:54:31 ПП
User 91770096
но ты понимаешь что можно в одном запросе зареквестить много ресурсов
05:54:41 ПП
User 91770096
короче зависит от конкретных кейсов
06:00:03 ПП
User 89599420
хотел чекнуть апи гитхаба чтоб проверить как они это обрабатывают, так они просто закрыли доступ к графикл если не залогинен)
06:01:09 ПП
User 321317845
это очевидно
08:19:57 ПП
User 89599420
User 91770096
короче зависит от конкретных кейсов
решил это все тем что на клиете при запуске сессии делаю запрос на viewer который возвращает инфу о текущем юзере, и если вернет нул то перенаправляю на логин скрин.
Спасибо за помощь)