Не удается запустить перехватчик requestError - PullRequest
0 голосов
/ 20 февраля 2019

Я хотел бы проверить, является ли токен пользователя действительным перед обработкой запроса, и я делаю это с перехватчиками.

следующий код:

  request: (request: RequestMessage): any => {
    return new Promise((resolve, reject) => {
      console.log('token expires at', this.expiresAt);
      if (this.isTokenExpired()) {
        console.log('token expired');
        throw new Error("{ message: 'Session expired', statusCode: 401 }");
      }

      if (this.accessToken) {
        this.setAuthorizationHeaders(request);
      }
      resolve(request);
    });
  },
  requestError: (error): any => {
    console.log('request error', error);
    throw new Error(`yo ${error}`);
  }

Однако, хотя я вижу ошибку в консоли, она, кажется, никогда не проходит через requestError.Я посмотрел на модульные тесты для метода Interceptor в исходном коде, но не вижу ничего слишком отличного от того, что я пытаюсь здесь.Что я делаю не так?

РЕДАКТИРОВАТЬ: добавление HttpClient код конфигурации:

const request = this.httpClient
  .createRequest(url)
  .withBaseUrl(this.baseUrl)
  .withHeader('Accept', 'application/json');

// Interceptor ?
if (withInterceptor) {
  request.withInterceptor(this.interceptor);
}

// Content type
if (contentType) {
  request.withHeader('Content-Type', contentType);
}

// Params
if (params != null) {
  request.withParams(params);
}

// Data
if (data != null) {
  request.withContent(urlEncode ? UrlUtils.encodeQueryData(data) : data);
}

// Method
switch (method) {
  case 'GET':
    request.asGet();
    break;
  case 'POST':
    request.asPost();
    break;
  case 'PUT':
    request.asPut();
    break;
  case 'DELETE':
    request.asDelete();
    break;
}

1 Ответ

0 голосов
/ 22 февраля 2019

Следующие данные взяты из официального документа:

requestError acts as a Promise rejection handler during Request creation and request interceptor execution. It will receive the rejection reason, and can either re-throw, or recover by returning a valid Request.

Вы можете видеть, что вы вводите requestError только тогда и только тогда, когда во время создания запроса есть ошибка: искаженные заголовки,недопустимые конфиги и т. д.

Ваше использование, изложенное в этом вопросе, является абсолютно действительным, поэтому не будет выдано никакой ошибки для requestError для запуска.

...