Angular 10调用API返回纯文本解析报错,如何指定响应数据类型为文本
Angular 10调用返回纯文本接口的解决方案
Angular HttpClient默认会将响应内容按照JSON格式解析,你只需要在请求配置中添加responseType: 'text'参数,即可指定本次请求按纯文本处理响应,同时不会影响原有的Content-Type请求头配置,完全满足接口要求传递JSON请求体的需求。
修改方案
方案1:直接针对本次请求单独配置
修改create方法的请求参数,在请求配置中扩展responseType属性:
public create = (route: string, body: any) => { return this.http.post( this.createCompleteRoute(route, this.envUrl.urlAddress), body, // 扩展原有headers配置,新增响应类型设置 { ...this.generateHeaders(), responseType: 'text' } ); } private generateHeaders = () => { return { headers: new HttpHeaders({'Content-Type': 'application/json'}) } }
方案2:封装通用配置适配多场景
如果存在多个需要返回纯文本的接口,可以对generateHeaders方法做扩展,灵活适配不同响应类型的需求:
public create = (route: string, body: any) => { // 传参指定本次请求响应类型为文本 return this.http.post( this.createCompleteRoute(route, this.envUrl.urlAddress), body, this.generateHeaders('text') ); } // 新增可选的响应类型参数,默认还是JSON private generateHeaders = (respType: 'json' | 'text' = 'json') => { return { headers: new HttpHeaders({'Content-Type': 'application/json'}), responseType: respType } }
注意事项
responseType是请求配置的顶级属性,不要放到HttpHeaders的配置项中- 配置完成后接口返回的结果直接是字符串类型,无需再做额外的JSON解析处理
内容的提问来源于stack exchange,提问作者User1899289003
相关产品推荐
相关产品推荐

