首页 > 解决方案 > 在一次调用中处理两种不同类型的返回(文件(Blob)或 JSON)

问题描述

这是一个令人困惑的问题,但希望有人可以提供帮助。

基本上,我从 Angular 11 中的服务调用 API,它可以返回两件事之一。

  1. 如果 API 正确处理上传的文件,它会向用户返回一个新文件。
  2. 如果 API 没有正确处理上传的文件,它会返回 JSON 给用户

如何编写可以处理作为文件的响应或作为 JSON 的响应的请求?我有很多麻烦。

提前致谢。

(我当前的服务请求)

return this._http.post(this.baseUrl, formData, {observe: 'response', responseType: 'blob'});

标签: angulartypescriptasp.net-corehttprequesthttpresponse

解决方案


您应该返回来自服务器的错误请求,您可以使用 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);
  }),
);

推荐阅读