Перехват ошибки 401 GraphQL Apollo React.js

Используя axios в приложении React.js, я перехватывал ошибку 401 и обновлял токен, после чего повторял попытку запроса и в случае повторной ошибки, я уже полностью выходил из аккаунта.

private async responseInterceptor(error: AxiosError) {
  const originalRequest = error.config
  if (error.config && error.response?.status === 401 && !error.config['isRetry']) {
    originalRequest['isRetry'] = true
    if(await this.refresh()) await axios.request(originalRequest)
  } else throw error
}

Я перехожу на GraphQL с Apollo и мне необходимо реализовать тоже самое.

Авторизация у меня реализована через REST. На данный момент я только добавляю токен в заголовок Authorization.

this.apollo = new ApolloClient({
  link: createHttpLink({
    uri: APIProvider.BASE_URL + 'graphql',
    credentials: 'include'
  }).concat(setContext((_, { headers }) => {
    const token = /* getting token */
    return {
      headers: {
        ...headers,
        Authorization: token ? `Bearer ${token}` : ''
      }
    }
  })),
  cache: new InMemoryCache(),
})

Ответы (0 шт):