gpt4 book ai didi

javascript - 如何使用 NestJS 重新抛出 HttpService 调用的错误?

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:38 27 4
gpt4 key购买 nike

我使用 NestJS 本质上是使用 HttpService(一个可观察的包装 Axios 库)将请求代理到另一个 api。例如:

return this.httpService.post(...)
.pipe(
map(response => response.data),
);

调用成功后正常工作;但是,如果出现错误 (4xx),我该如何正确返回状态和错误消息?

我已经想出如何用 promises 来做到这一点,但如果可能的话,我想留在一个可观察的范围内。

最佳答案

您可以使用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用于检查所有错误情况。

此外,axios 不会抛出 4xx 错误,因为它们可能是预期的并且来自 API 的有效响应。您可以通过设置 validateStatus 来自定义此行为,请参阅 docs .

关于javascript - 如何使用 NestJS 重新抛出 HttpService 调用的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55601651/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com