在自定义 rails 应用中实施第三方 API 资源

Implementing third party API resources in a custom rails app

我是一名在美国著名训练营学习网络开发的学生。对于我的顶点项目,我决定尝试构建一个相当简单的应用程序,其中一个经过身份验证的用户可以将一定数量的比特币发送给另一个用户(我向我的老师描述为一个瓶装小费平台)。虽然这在理论上听起来很简单,但有很多地方我担心会被绊倒。

我正在使用 rails 构建此应用程序,使用 Coinbase API。在我的学校,我们 rails 学习了相当严格的 MVC 架构。这是我发现第一个问题的地方。关于资源,我们基本上是从头开始构建;这将标志着我第一次尝试在后端实施第三方 API。我在 Coinbase 文档中注意到,我需要使用多个明确定义的资源。最值得注意的资源是用户和帐户(我将帐户搭建为 'profiles',但它们在 ERD 中的用途相同)。

如果我正在使用这些预构建的资源,我是否需要完全构建它们,或者我是否可以简单地将它们导入我的文件,然后根据我的规范自定义编写代码?如果是这样,我是否可以简单地拆除我的脚手架并从头开始?更广泛地说,我应该如何将预先存在的资源放入我的 MVC 架构中?

非常感谢任何帮助!

将使用 Stripe 作为示例,因为他们的文档是最好的:

在您的 Rails 应用中,您有一个 User 模型。对于此示例,您的用户有 idemailstripe_customer_id

user.rb:

before_create :create_stripe_customer

def create_stripe_customer
  stripe_customer = Stripe::Customer.create(
    :email => "your@email.com",
  ) 
  self.stripe_customer_id = stripe_customer.id
end

def stripe_customer
  @stripe_customer ||= Stripe::Customer.find(self.stripe_customer_id)
end 

对外部 API 使用 before_create 是不受欢迎的 ("what if it timeouts or errors?") 但为了学习如何做,这很好。

如果你问 "should I replicate all the data in my own database?",答案是否定的;让 API 完成工作,但缓存结果并确保您不会使用外部 API 请求阻止您的应用请求。