Я пытаюсь использовать Angular HttpClient
для звонков в службу REST.
Однако между моим клиентом и бэкэндом существует слой аутентификации, который проверяет все запросы на наличие действительного токена аутентификации. Если этот токен не существует, прокси-сервер выдаст ответ 302
, перенаправив мой запрос на страницу входа text/html
.
Я понимаю, что это странно, но у меня нет контроля над этим уровнем и его функционированием. Я просто пытаюсь использовать интерфейс HttpInterceptor
для просмотра содержимого полезной нагрузки ответа и просмотра полезной нагрузки для определенных ключевых слов. что я уверен, что будет в этом text/html
ответе.
Я попробовал следующее, чтобы посмотреть, смогу ли я увидеть ответ:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request)
.pipe(
tap(console.log)
);
}
но я всегда представляю это как вывод:
{"type": 0}
Я смог просмотреть ответ, если я просто добавлю { responseType: 'text' as 'json' }
к своим HttpClient
вызовам, т. Е .:
return this.httpClient.get<string>(
'http://my/service',
{ responseType: 'text' as 'json' }
);
и вызовите .pipe(map(s => JSON.parse(s)))
в ответе для создания объекта из строки, но это, очевидно, неуклюже, склонно к проблемам, и много работы, чтобы добавить это ко всем случаям использования HttpClient
.
Мне кажется, что Angular автоматически отбрасывает / заменяет полезную нагрузку, если полезная нагрузка не является допустимой JSON, прежде чем я смогу просмотреть ее с помощью моего перехватчика, если я не скажу прямо, что моя полезная нагрузка на самом деле не является JSON. Есть ли способ для меня, чтобы проверить мою полезную нагрузку в перехватчик без необходимости делать это?