Не удается запустить перехватчик requestError
Я хотел бы проверить, является ли токен пользователя действительным перед обработкой запроса, и я делаю это с перехватчиками.
следующий код:
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 ответ
Следующее от официального документа:
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
пнуть.