【发布时间】:2018-11-19 17:43:46
【问题描述】:
我遇到了有关 Angular 4 应用程序的问题。我创建了一个从第三方 API 获取数据的应用程序。我遇到的问题是我的 API 多次调用,但我只发送了一次请求。
经过一些研发后,我发现浏览器正在使用 OPTION 方法运行飞行请求,但在检查了所有 API 后,我发现它们运行了多次,但飞行请求除外。就像一个 API,我请求 API 一次,它运行 4 次 2 次选项和 2 次 GET 请求。我检查了我的代码,只有一次请求正在运行。
我完全理解并同意航班请求。
我分析了本地的所有呼叫,结果如下: 1.所有 GET 调用都有相应的 OPTIONS 调用,根据某些文章,这不是问题 2. 但是,这些调用有多个:
http://localhost:3005/tasks?taskID=1713&singular=1 = 4 Get call, 2 OPTIONS call - why?
http://localhost:3003/resources/30/configs = 2 GET call, 1 OPTIONS call - why?
http://localhost:3003/resources/146/configs = 2 GET cal, 1 OPTIONS call - why?
http://localhost:3003/resources/30/settings = 2 GET call, 1 OPTIONS call - why?
http://localhost:3003/resources/146/settings = 2 GET call, 1 OPTIONS call - why?
这些是唯一多次 GET 的调用。对于所有其他调用,/environments、/settings、/admin、/currentevent、/currentshift.. get 调用只进行一次。
return this.http.get(this.environment.SFDCServiceHost + 'getCurrentEvent?resourceId=' + id + '&singular=1', {headers: this._helperService.setRequestHeader(id)});
【问题讨论】:
-
您能否详细说明调用的位置,换句话说,您从哪里调用 API?在这种情况下,正是这些小事提供了提示
-
我创建了一个服务,我在其中运行所有 API 并将数据存储到我的浏览器会话中。每当应用程序首次加载时,它都会使用该服务从 API 获取数据。之后我将本地存储用于其他事情
-
我现在怀疑的是,无论您从哪里调用 API,都不会只运行一次,这可以解释,这就是我要代码的原因
-
我曾经遇到过同样的问题,这是我的拦截器和mergeMap操作符的问题,如果你使用了一些检查那些
-
@DmytroGrynets 但我遇到了一些选定请求的问题。我有大约 7 个 API,但只有 3 个会出现问题。其他请求运行良好。
标签: angular typescript angular4-httpclient