Cha*_*haz 15 javascript observable typescript axios nestjs
我正在使用 NestJS 基本上使用HttpService(一个可观察的包装 Axios 库)将请求代理到另一个 api 。例如:
return this.httpService.post(...)
.pipe(
map(response => response.data),
);
Run Code Online (Sandbox Code Playgroud)
这在调用成功时正常工作;但是,如果出现错误 (4xx),我该如何正确返回状态和错误消息?
我已经想出了如何用承诺来做到这一点,但如果可能的话,我想留在一个可观察的范围内。
Kim*_*ern 21
您可以使用catchError相应的状态代码重新抛出异常:
import { catchError } from 'rxjs/operators';
this.httpService.get(url)
.pipe(
catchError(e => {
throw new HttpException(e.response.data, e.response.status);
}),
);
Run Code Online (Sandbox Code Playgroud)
请注意,它error.response可能为空,请参阅axios 文档以了解要检查的所有错误情况。
此外,axios 不会抛出 4xx 错误,因为它们可能是预期的,并且来自 API 的有效响应。您可以通过设置自定义此行为validateStatus,请参阅文档。
| 归档时间: |
|
| 查看次数: |
7041 次 |
| 最近记录: |