Angular 使用HttpClient处理来自同一api的多种类型的响应

Angular 使用HttpClient处理来自同一api的多种类型的响应,angular,Angular,我有一个后端api,调用它时会生成html或json响应。这里的问题是我无法控制响应类型。我使用的是angular httpclient模块,该模块具有可选的responseType参数,我们可以使用该参数指定响应类型。当我尝试将responseType显式地称为“html”时,它对html类型的响应很好,而当响应为JSON时,它不会像预期的那样工作。 当我使用angular http时,它工作得很好,因为默认情况下http不会期望响应是json 注意:当我没有提到responseType时,h

我有一个后端api,调用它时会生成html或json响应。这里的问题是我无法控制响应类型。我使用的是angular httpclient模块,该模块具有可选的responseType参数,我们可以使用该参数指定响应类型。当我尝试将responseType显式地称为“html”时,它对html类型的响应很好,而当响应为JSON时,它不会像预期的那样工作。 当我使用angular http时,它工作得很好,因为默认情况下http不会期望响应是json

注意:当我没有提到responseType时,httpclient会抛出HttpErrorResponse,并且这个错误包含了它的内容

我已尝试设置responseType:'text'|'html',但这会导致错误:禁止按位操作(无按位操作)

这就是我一直在做的

let headersForHtmlResponseType: HttpHeaders = new HttpHeaders();
            headersForHtmlResponseType = 
headersForHtmlResponseType.set('Accept', 'application/json , 
text/plain');

requiredOptionsForHtmlResponse 
           = {
                headers: headersForHtmlResponseType,
                //responseType: 'text'
            };


return this.httpClient.get(url, requiredOptionsForHtmlResponse);
这导致HttpErrorResponse,因为HttpClient无法将html响应解析为JSON。当我删除resposneType上的注释时,结果对于html响应来说是好的,但是它将JSON响应转换为我不需要的文本


我想使用HttpClient处理这两种响应类型。是否有任何方法可以阻止HttpClient将html内容解析为JSON或将JSON内容解析为文本?

只需获取原始正文(请参阅文档)并按需要进行解析,但如果API不尊重内容类型协商,这是一个问题。@JonSharpe是否由请求选项中的observe属性控制?我将其更改为观察:“response”,但HttpClient仍在解析响应,如果响应是html类型,则抛出错误。不,它不受该类型的控制。设置
responseType:'text'
不会“将JSON解析为文本”,它只是。。。不将文本解析为JSON。只需获取原始正文(请参阅文档)并按需要进行解析,但如果API不尊重内容类型协商,这是一个问题。@jonrsharpe它是否由请求选项中的observe属性控制?我将其更改为观察:“response”,但HttpClient仍在解析响应,如果响应是html类型,则抛出错误。不,它不受该类型的控制。设置
responseType:'text'
不会“将JSON解析为文本”,它只是。。。不将文本解析为JSON。