代码之家  ›  专栏  ›  技术社区  ›  Elliott de Launay

Rails-MVC-我应该将外部API调用转移到模型中吗?

  •  1
  • Elliott de Launay  · 技术社区  · 11 年前

    我对rails和MVC开发很陌生,一直在开发一个应用程序,该应用程序可以对bitly进行外部API调用。

    我在视图中放置了以下内容以生成一个shorturl,然后将其用于fb和twit。

    <% Bitly.use_api_version_3
      bitly = Bitly.client
      shareUrl = bitly.shorten("http://example.com/#{id}").short_url%>
    

    现在我已经这样做了,我意识到每次看到这个页面时我都会打电话。我认为在模型视图中这样做比缓存它更有效。这有意义吗?我将如何在模型中执行此操作?

    3 回复  |  直到 11 年前
        1
  •  0
  •   AshwinKumarS    11 年前

    最好将API放在一个单独的模型文件中,通过控制器调用它们,并将其传递到相应的视图。这样你就可以在控制器中调节你的API调用。

        2
  •  0
  •   Graham Carey    11 年前

    我更喜欢将这些放入一个服务中,该服务负责处理不同的外部API。

    像往常一样,有一个RailsCast用于创建服务对象 http://railscasts.com/episodes/398-service-objects

        3
  •  0
  •   Elliott de Launay    10 年前

    我最终在模型中做了以下操作

    before_save :set_shareUrl 
    def set_shareUrl 
     Bitly.use_api_version_3 
     bitly = Bitly.client 
     self.shareURL = bitly.shorten("http://example.com/#{id}").short_url 
    end