Angular 使用HttpClient处理来自同一api的多种类型的响应
我有一个后端api,调用它时会生成html或json响应。这里的问题是我无法控制响应类型。我使用的是angular httpclient模块,该模块具有可选的responseType参数,我们可以使用该参数指定响应类型。当我尝试将responseType显式地称为“html”时,它对html类型的响应很好,而当响应为JSON时,它不会像预期的那样工作。 当我使用angular http时,它工作得很好,因为默认情况下http不会期望响应是json 注意:当我没有提到responseType时,httpclient会抛出HttpErrorResponse,并且这个错误包含了它的内容 我已尝试设置responseType:'text'|'html',但这会导致错误:禁止按位操作(无按位操作) 这就是我一直在做的Angular 使用HttpClient处理来自同一api的多种类型的响应,angular,Angular,我有一个后端api,调用它时会生成html或json响应。这里的问题是我无法控制响应类型。我使用的是angular httpclient模块,该模块具有可选的responseType参数,我们可以使用该参数指定响应类型。当我尝试将responseType显式地称为“html”时,它对html类型的响应很好,而当响应为JSON时,它不会像预期的那样工作。 当我使用angular http时,它工作得很好,因为默认情况下http不会期望响应是json 注意:当我没有提到responseType时,h
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。