gpt4 book ai didi

ruby-on-rails - 在 Rails 4 中组织外部 API 调用 - 模块还是类?

转载 作者:数据小太阳 更新时间:2023-10-29 07:05:33 25 4
gpt4 key购买 nike

我正在创建一个 Rails 应用程序,它将使用相当多的外部 API,例如 SalesForce、FolderGrid(如 Dropbox)等,它们都会同步到我的数据库。我从来没有使用过外部 api 调用,所以我创建了一些基本的 Ruby 脚本和分散的方法来测试对这些资源的调用。现在我想用我的完整 Rails 应用程序来实现它们。

到目前为止,我首先在我的/lib 文件夹中创建一个目录来保存 api 调用模块/类。

/lib/apis/foldergrid.rb

现在我不确定组织代码的最佳方法是什么。在我的独立 Ruby 脚本中,我有用于身份验证、创建文件夹、审核文件、下载文件等的方法。

模块中应该包含什么?我什至需要一个模块吗?类里面应该有什么?我如何确保我可以在需要的地方在我的模型和 Controller 中使用这些方法?是否有关于外部 API 的最佳实践?

非常感谢任何资源、链接和/或更深入的理解。

最佳答案

我有一个应用程序也可以执行此操作(从多个 API 提取数据),因此我可以告诉您我会做什么(或者在某些情况下,如果我重新开始,我现在会做什么)。

数据存储

首先,如果您已经将从这些数据中提取的数据保存到 Rails 应用程序中,那么您将拥有代表数据本身的模型。所以这就是您在 Controller 中引用的内容,除非您的 Controller 负责调用 API。

尽可能使用 gem

其次,确保利用 API 的现有 gem,这样您就不会重新创建身份验证轮、解析与应用程序之间的 JSON 等。例如:有一个 rest-force。销售人员的 gem 。

使用 Lib 中的 Ruby 对象在模型和 API 响应之间进行映射

第三,我会将 API 响应和您的模型之间的数据映射到“普通旧 ruby​​ 对象”中,并将它们存储在 lib/apis 文件夹中(在这些情况下不需要存储在模块中,但恕我直言)。它们最终可能会非常实用,在映射数据的情况下,这没问题。

没有现有 Gem 的 API

在那些情况下,我肯定会将它们保存在一个模块下的一个或多个类中,在它们自己的 lib 文件夹中。这样你就可以在需要时将它们作为 Gem 解析出来(或者如果你花时间让它们成为 Gem 开始,我相信其他人会受益)。这周我自己才开始走这条路,使用 Infoconnect's API它没有 Gem(或任何语言的任何代码示例)。但我并没有走得太远。

如果需要,为 V 和 C( View 和 Controller )之间的代码创建服务对象

如果您最终确实需要做任何事情来与用户交互以获得 API 信息或任何调用这些请求的东西,我会将它们放在 service objects 中。这样您的代码就不会在 View 或 Controller 中变得臃肿。

关于ruby-on-rails - 在 Rails 4 中组织外部 API 调用 - 模块还是类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30677010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com