如何在 AngularJS 应用程序中减少 API 请求
How to cut down API requests in AngularJS app
我的问题是我提出了太多 API 请求,我想尽可能减少请求。下面我将描述一下情况:
我有三个页面,都使用 ngRoute
链接。像这样:
Page A: Teams (list of teams)
URL: "/teams"
Page B: Team Details (list of players)
URL: "/teams/team-details"
Page C: Player Details (list of player stats)
URL: "/teams/team-details/player-details"
页面 A 是通过使用一个简单的 $resource.query()
请求从 API 中非常容易地提取团队数组并使用 ng-repeat 遍历它们来填充的。
通过调用 html 模板并使用从 单独的 API 请求 到 /team-details
的值填充特定字段来填充页面 B端点,从页面 A 上单击的元素中获取 team_id
值。
页面 C(与页面 B 一样)从页面 B 上点击的播放器获取 player_id
并使用该值调用 /player-details
端点。这是另一个单独的请求。
一切正常,但您可以想象,一个用户很容易在一小时内收到超过 100 个 API 请求。
我的请求限制是 1000/小时,所以如果只有 10 个用户同时在线,它很容易超过我的限制并关闭我的 API.
如果我可以将 API 作为一个单一的主端点访问,并在一组中输出所有数据和子数据,那么这将解决我的问题,但由于我需要请求单独的端点,所以我看不到怎么做。
有没有更好的方法来解决这个问题?或者这些过多的 API 请求是唯一的方法吗?
如有任何帮助,我们将不胜感激。
据我所知,您的模型看起来适合该应用程序并且符合 API 驱动的应用程序应该如何工作...
但是,您可以做的一个潜在缩减是在本地缓存一些结果。即存储一些不太可能在会话中更改的数据的本地版本。例如,如果团队数量不太可能发生变化,则将 1 API 请求的结果存储在本地并使用它,而不是从您的 API.
中调用数据
按照这条路线,您可以选择仅在特定时间段后更新特定数据。因此,如果用户查看了一些 team-details
则拒绝在接下来的 10-20 分钟内更新此数据。但是,这又取决于您的数据对时间的敏感程度。
我的问题是我提出了太多 API 请求,我想尽可能减少请求。下面我将描述一下情况:
我有三个页面,都使用 ngRoute
链接。像这样:
Page A: Teams (list of teams)
URL: "/teams"
Page B: Team Details (list of players)
URL: "/teams/team-details"
Page C: Player Details (list of player stats)
URL: "/teams/team-details/player-details"
页面 A 是通过使用一个简单的 $resource.query()
请求从 API 中非常容易地提取团队数组并使用 ng-repeat 遍历它们来填充的。
通过调用 html 模板并使用从 单独的 API 请求 到 /team-details
的值填充特定字段来填充页面 B端点,从页面 A 上单击的元素中获取 team_id
值。
页面 C(与页面 B 一样)从页面 B 上点击的播放器获取 player_id
并使用该值调用 /player-details
端点。这是另一个单独的请求。
一切正常,但您可以想象,一个用户很容易在一小时内收到超过 100 个 API 请求。
我的请求限制是 1000/小时,所以如果只有 10 个用户同时在线,它很容易超过我的限制并关闭我的 API.
如果我可以将 API 作为一个单一的主端点访问,并在一组中输出所有数据和子数据,那么这将解决我的问题,但由于我需要请求单独的端点,所以我看不到怎么做。
有没有更好的方法来解决这个问题?或者这些过多的 API 请求是唯一的方法吗?
如有任何帮助,我们将不胜感激。
据我所知,您的模型看起来适合该应用程序并且符合 API 驱动的应用程序应该如何工作...
但是,您可以做的一个潜在缩减是在本地缓存一些结果。即存储一些不太可能在会话中更改的数据的本地版本。例如,如果团队数量不太可能发生变化,则将 1 API 请求的结果存储在本地并使用它,而不是从您的 API.
中调用数据按照这条路线,您可以选择仅在特定时间段后更新特定数据。因此,如果用户查看了一些 team-details
则拒绝在接下来的 10-20 分钟内更新此数据。但是,这又取决于您的数据对时间的敏感程度。