Rails第三方API调用的最佳实践?

我有一个rails应用程序,可以调用第三方API进行天气预报。

问题是API调用通常非常慢,有时会失败。 显示天气不是必需的,但它增加了一些额外和相关的信息。

现在我在控制器中使用Barometer gem调用Wunderground API,这意味着如果API缓慢或失败,页面将永远加载。

我希望在页面加载后从页面调用此AJAX调用。 我不介意这些信息是否显示有点延迟,因为如上所述它并不是非常重要。

我只是好奇这个电话的最佳做法? 什么是Rails方式?

建议的方法是在后台调用API(使用调度程序)并将结果保存在数据库中。 然后在控制器中,您可以从数据库中获取数据,并且不会有任何延迟。

我会说你在从浏览器转移到AJAX调用时非常正确 – 这样你的页面加载不会受到影响,并且它可能需要多长时间而不需要服务器等待它。 这是异步加载数据的典型案例(通过回调和/或jQuery的deferred方法),以便在数据加载时您可以使用其他所有内容,而您的用户不会等待他们可能不太感兴趣的某些信息用。

在保持Rails方面,您的主要考虑因素是您是否可以和/或想要直接从浏览器拨打电话到服务,或者您是否希望在某种程度上通过您的应用程序代理它,这将节省潜在的交叉 – 域请求问题。 这又是你的决定,并且将取决于你是否有任何需要通过请求传输的API密钥等等,但如果请求可以直接从用户运行到天气API那么这将允许你切断你的中间步骤。