Apollo-link-rest: 404 OK Ответ возвращает null вместо ошибки

Созданный на 15 июл. 2019  ·  6Комментарии  ·  Источник: apollographql/apollo-link-rest


Недавно я работал в проекте, используя apollo-link-rest, чтобы сделать однородными различные вызовы (на разные конечные точки), которые использовало приложение. Некоторые конечные точки являются GraphQL, другие - остальными.

Одна из моих конечных точек отказала, поскольку ресурс, который я искал, не существовал, и поэтому выборка возвращала 404. Но с # 119 и # 142 (https://github.com/apollographql/apollo-link-rest/blob /master/src/restLink.ts#L1047).

Почему имеет смысл скрывать информацию из ответа? Можно ли это сделать на основе конфигурации?

help wanted 🛠 question❔

Все 6 Комментарий

Для многих компаний ошибка 404 является «нефатальной ошибкой» - это просто означает, что чего-то нет. Часто в ответе 404 нет «лишних» данных, поэтому возвращение null выглядело как модель, лучше всего подходящая для GraphQL. Основываясь на обсуждениях в №119 и за его пределами, казалось, что существует консенсус, что это приводит к более болезненному исходу, поэтому изменение было внесено.

Если вы все же хотите, чтобы это не удалось, вы можете написать свою собственную оболочку customFetch которая будет выдавать ошибку при возникновении ошибки 404.

Спасибо @fbartho, думаю, это имеет смысл. Я думаю, что проблема в нашем случае заключается в том, что наша схема выглядит очень REST-y, что затрудняет работу без 404. Я продолжу и реализую свой собственный customFetch. Спасибо!

Я не думаю, что к ошибкам 404 нужно относиться по-другому, они по-прежнему являются ошибкой клиента.

@kevinrobayna Удалось ли вам обработать ошибку 404? У меня аналогичное требование. Мне нужно обработать ошибку 404. В настоящее время клиент apollo возвращает нулевые данные. пока я вижу это 404 в инспекторе сети.

@anasnain Мне пришлось обработать это в событии onCompleted :

onCompleted: (data) => {
  const token = data?.passwordRecoveryToken;
  // Apollo client sends null on 404 errors: https://github.com/apollographql/apollo-link-rest/issues/119
  if (!token) return handleEmailNotFound();

  return onGoToVerifyCode({ tokenId: token.id, email: inputs?.email?.value });
},

Я поставил PR, чтобы восстановить 404 как обычные сетевые ошибки, чтобы совпасть с хорошими практиками REST API: https://github.com/apollographql/apollo-link-rest/pull/283

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

jbaxleyiii picture jbaxleyiii  ·  10Комментарии

4nakin picture 4nakin  ·  16Комментарии

chimon2000 picture chimon2000  ·  9Комментарии

isopterix picture isopterix  ·  18Комментарии

MichelDiz picture MichelDiz  ·  7Комментарии