我正在使用NestJS使用HttpService
(可观察的包装式Axios库)将请求代理到另一个api。例如:
return this.httpService.post(...)
.pipe(
map(response => response.data),
);
当呼叫成功时,这将正常工作;但是,如果出现错误(4xx),如何正确返回状态和错误消息?
我已经找到了如何兑现承诺的方法,但是如果可能的话,我希望保持在可观察的范围之内。
答案 0 :(得分:0)
您可以使用catchError
使用相应的状态码重新抛出异常:
import { catchError } from 'rxjs/operators';
this.httpService.get(url)
.pipe(
catchError(e => {
throw new HttpException(e.response.data, e.response.status);
}),
);
请注意,error.response
可能为空,请参见axios docs,以检查所有错误情况。