Apollo предоставляет исчерпывающий способ обработки ошибок с помощью ссылок, в частности apollo-error-link .В отличие от использования HttpInterceptor, это позволяет вам указать логику для сетевых ошибок, а также ошибок, включенных в ответ как часть массива errors
:
import { onError } from 'apollo-link-error';
const link = onError(({ graphQLErrors, networkError }) => {
if (graphQLErrors)
graphQLErrors.map(({ message, locations, path }) =>
console.log(
`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`,
),
);
if (networkError){
console.log(`[Network error]: Status: ${networkError.statusCode}`);
}
});
Эта ссылка также может быть объединена с apollo-link-retry для еще более плавной обработки ошибок.Ссылки составляются и затем передаются конструктору вашего клиента, например:
const errorLink = onError(...);
const httpLink = new HttpLink(...);
const link = ApolloLink.from([
errorLink,
httpLink,
]);
const client = new ApolloClient({
link,
...
})