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