Сценарий:
- Веб-приложение открыто, но токен истек.
- Затем пользователь выполняет какое-то действие, которое делает запрос API.
- GraphQL возвращает
Error: GraphQL error: unauthorized
. - Приложение не отвечает из-за ошибки. Плохой пользовательский опыт.
onError
из apollo-link-error
метод отлавливает ошибку, и из этого я могу вызвать refreshToken()
(требуется jwt с истекшим сроком действия). - Новый токен генерируется и сохраняется для использования.
- Следующее действие пользователя будет go выполнено как обычно.
В настоящее время это мой код:
const errorLink = onError(({ graphQLErrors, networkError }) => {
if (graphQLErrors) {
refreshToken();
}
});
const link = ApolloLink.from([errorLink, terminatingLink]);
Как Можем ли мы улучшить этот поток, чтобы токен обновлялся, когда пользователь делает запрос без получения ошибки? Что-то вроде запроса «удерживается», если он вызывает ошибку, то после обновления токена он обрабатывается. Но я не уверен, как это сделать.
Или есть какой-то другой способ улучшить этот поток?