angular - 在一次调用中处理两种不同类型的返回(文件(Blob)或 JSON)
问题描述
这是一个令人困惑的问题,但希望有人可以提供帮助。
基本上,我从 Angular 11 中的服务调用 API,它可以返回两件事之一。
- 如果 API 正确处理上传的文件,它会向用户返回一个新文件。
- 如果 API 没有正确处理上传的文件,它会返回 JSON 给用户
如何编写可以处理作为文件的响应或作为 JSON 的响应的请求?我有很多麻烦。
提前致谢。
(我当前的服务请求)
return this._http.post(this.baseUrl, formData, {observe: 'response', responseType: 'blob'});
解决方案
您应该返回来自服务器的错误请求,您可以使用 rxjs 运算符来解决此问题。Rxjs 运算符用于pipe()函数。
您可以使用catchError()运算符https://www.learnrxjs.io/learn-rxjs/operators/error_handling/catch处理错误请求
在catchError()运算符中,您应该返回 observable。在这个例子中,我只是返回包含在 observable 中的 null 值。
return this._http.post(this.baseUrl, formData, {observe: 'response', responseType: 'blob'}).pipe(
catchError((response: any) => {
// you can write code here
// you should return with observable
return of(null);
}),
);
推荐阅读
- sql - SQL 从多个表中查询并检索数据
- node.js - crypto.scrypt -> createDecipheriv -> 错误。节点JS
- fft - GNU链接器“ld”是否创建了对`fftw_alloc_complex的未定义引用
- c++ - 我需要计算用户写的数字的平均值,但是当我尝试时它告诉我平均值始终为 0
- typescript - 我可以在“d.ts”中定义具有相同名称的类型吗?
- python - VMware rest API 获取资源池不返回所有值
- clojure - 有没有更好的方法在 Clojure 中将事物构建为原子?
- sql-server - 乘以大浮点?
- azure-active-directory - 用于 MS Azure 的 TAI 与 Idp 启动的流的 Websphere 应用程序服务器设置不起作用
- powerapps - 如何从 Power Portal 调用 ACS 调用