我正在尝试使用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
的所有用法中。 / p>
在我看来,如果有效载荷不是有效的JSON,Angular会自动删除/替换有效载荷,然后再使用拦截器查看它,除非我明确告诉我我的有效载荷实际上不是JSON。有什么方法可以让我在不需要拦截器的情况下检查拦截器中的有效载荷吗?