【问题标题】:Angular 4 single API request running multiple timesAngular 4单个API请求多次运行
【发布时间】: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


【解决方案1】:

您的代码可能存在一些问题。浏览器不添加运行任何额外的请求,除了航班请求。要检查这一点,您首先检查该函数调用了多少次。我对此非常肯定,因为我遇到了同样的问题。

【讨论】:

  • 谢谢,我检查了屏幕并发现了问题。
  • @RahulGahlot 你能分享一下是什么问题吗?
【解决方案2】:

这是默认浏览器功能。每次运行 HTTP 请求时,您的浏览器都会使用您指定的方法运行两次,另一次用于方法 OPTION,其中浏览器检查该请求是否存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多