我正面临一个我不知道如何解决的问题。 我正在 Angular 4 中开发一个小型网络应用程序。在该应用程序中,我向我在公司网络中托管的 Node.js - Express 中开发的api发出http请求。
我的问题是,大多数时候那些调用api的工作都非常好。在我的开发环境,家里以及我们的一些客户网络中,我没有遇到任何问题。但在某些网络中,http请求不会执行。
我知道因为我在api中注册了每个呼叫,在那些情况下我甚至都没有检测到呼叫。在Chrome中,我甚至收到404错误。 此外,我在客户的计算机上安装了 Postman ,但仍然没有回复。 我认为这是一个与api调用有关的网络策略,但我不知道我在寻找什么(代理?)。
你可以给我一些提示吗? 是否有可能在我的代码中检测到这些问题,并在这种情况下向客户显示消息?如果需要,我可以粘贴代码的某些部分。
谢谢!
编辑:我找到了导致我问题的原因。我的api使用了一个不常见的端口(3088),这个端口有时被客户网络策略阻止。我切换到443端口,现在运行得很好。
答案 0 :(得分:1)
因此,假设您正在使用angulars HTTP服务,您有两个选项,因为您可以看到此处的请求返回一个observable,然后您可以订阅它并处理错误。
getConfig(): Observable<HttpResponse<any>> {
return this.http.get(this.configUrl);
}
showConfig() {
this.configService.getConfig()
.subscribe(
(data: Config) => this.config = { ...data }, // success path
error => this.error = error // error path
);
}
您也可以像这样重试请求
getConfig() {
return this.http.get<Config>(this.configUrl)
.pipe(
retry(3), // retry a failed request up to 3 times
catchError(this.handleError) // then handle the error
);
}
然后,您可以弹出一个Toast消息,告诉用户该错误是否发生,这里是来自Angular的文档的源材料:https://angular.io/guide/http。
希望这有帮助。