【问题标题】:architecture for get and store api request data获取和存储 api 请求数据的架构
【发布时间】:2020-04-30 22:03:15
【问题描述】:

这更多是一个架构问题。一个外部平台有产品和价格信息,比如说书籍。有一个 API 可用于获取此信息。

我读到的是应该可以在 Javascript 中创建一个函数并将 Javascript 连接到您想要在我自己的网站上显示数据的页面。这意味着对于每个页面请求都会进行一次 API 调用。由于请求的信息每天最多只更改一次,这听起来不是最有效的解决方案。

有人可以提出更好的解决方案吗?在后台执行请求、安排更新并将数据导入 mysql 的类似 php 或 javascript 函数的方向是什么?如果是这样,哪种语言最常见。

我需要 Joomla/php/mysql 环境的解决方案

【问题讨论】:

  • 听起来您关心的是为几乎静态的数据保存多个 API 调用。对吗?

标签: javascript php database rest architecture


【解决方案1】:

听起来你需要一个缓存,而且你不是第一个遇到这个问题的人 - 所以你可能不需要重新发明轮子并建立自己的。

查看Redis 之类的内容。这里也有一篇关于它的文章:https://www.compose.com/articles/api-caching-with-redis-and-nodejs/

【讨论】:

  • 非常感谢 Riaan。看到我的技能,这听起来是更复杂的方法。而且我还没有 Redis 可用。但我没有想到那个选项。感谢分享!
【解决方案2】:

这是一个简单的想法 - 从 API(您认为不会在一天内改变的结果)中获取并存储结果,无论是在磁盘上还是在数据库中,然后使用这些存储的结果来检索您原本需要的结果'已从 API 获取。

由于跨页面重新加载在前端 JS 中存储任何内容并不容易,因此您需要使用 PHP。根据给出的内容,您似乎有两种调用 API 的方式:

  • 通过前端 JS(禁止)
  • 通过您的 PHP 后端(随时可用)

现在,您需要确保每(例如)24 小时同步一次结果。

将 sn-p 添加到包含变量 $lastUpdated(或类似变量)的 PHP 代码中,并为其分配当前时间的“静态”值(不使用 time())。现在,添加几个语句来更新存储的结果if 当前时间至少比$lastUpdated 大 24 小时,然后将$lastUpdated 更新为当前时间。

这应该可以满足您每天一次 API 调用的需要。

PS:我不是 PHP 方面的专家,但你肯定能弄清楚日期时间的东西。

【讨论】:

  • 可爱的 Roshnet 非常感谢。我深入研究了这种方法,并试图找出如何做到这一点。感谢分享!
猜你喜欢
  • 2016-02-08
  • 1970-01-01
  • 2014-10-31
  • 2021-03-04
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多