根据Ruby on Rails最佳实践,在哪里存储调用第三方api的逻辑的好地方?

凯文·布朗

我正在练习使用rest-client gem进行第三方api调用。现在,我用于调用第三方api的代码存储show在my方法中search_controller.rb我假设最好将逻辑存储在控制器之外的其他位置,以遵循在Ruby上的“瘦控制器”实践。在哪里放置这种类型的逻辑会更好,还是在这里放置它是个好地方?

最高

我会说两种不同的对象。

客户群

这些类仅执行HTTP调用并触及应用程序边界。要将其隔离在离散对象中的原因是,它允许您在测试中对其进行模拟。它还使职责明确。

# adapted from the HTTParty readme
class StackExchangeClient
  include HTTParty
  base_uri 'api.stackexchange.com'

  def initialize(service, page)
    @options = { query: { site: service, page: page } }
  end

  def questions
    self.class.get("/2.2/questions")
  end

  def users
    self.class.get("/2.2/users")
  end
end

/lib 这是一个存储客户端的好地方,因为它们很少包含特定于应用程序的逻辑。

服务对象

服务对象是普通的旧式Ruby对象(PO​​RO),旨在在您的域逻辑中执行一个单独的操作并很好地执行。
- Rails的服务对象:一个综合指南

class QuestionImporterService
  def initialize(service, page, client: nil)
    @client = client || StackExchangeClient.new(service, page)
  end

  def call
     questions = @client.get_questions
     questions.map do |attributes|
       Question.new(attributes)
     end
  end
end

本示例使用构造函数注入来允许您模拟HTTP调用以进行测试。

您可以在中放置服务/app/services有时,Spring会“卡住”,并且不会在新文件夹中/app自动加载文件,在这种情况下,您可以通过调用重启它$ spring stop

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ruby on Rails第三方集成代码放置的最佳实践

来自分类Dev

Ruby on Rails Web应用程序的第三方API数据

来自分类Dev

Ruby on Rails Web应用程序的第三方API数据

来自分类Dev

在我的Rails应用程序中,负责进行第三方API调用的类在哪里?

来自分类Dev

第三方JS库在哪里?

来自分类Dev

在Magento中存储第三方服务凭据的“正确”位置在哪里?

来自分类Dev

根据条件搜索不同的模型[Ruby on Rails]

来自分类Dev

Laravel(4.2):在哪里放置第三方API连接?

来自分类Dev

根据Ruby约定在哪里放置配置块?

来自分类Dev

OpenID Connect服务器。根据第三方令牌生成访问令牌(社交登录)

来自分类Dev

如何通过Firebase调用第三方API?

来自分类Dev

调用第三方API时处理CORS

来自分类Dev

使用第三方OAuth2服务将SPA / REST应用的refresh_token存储在哪里?

来自分类Dev

Android Proguard-保留所有第三方库是否是最佳实践?

来自分类Dev

iOS Framework构建:与第三方库链接的最佳实践是什么?

来自分类Dev

在Haskell中处理来自第三方库的数据类型的最佳实践?

来自分类Dev

与您自己的依赖项共享第三方依赖项的最佳实践

来自分类Dev

Android Proguard-保留所有第三方库是否是最佳实践?

来自分类Dev

Haml,Ruby on Rails,如何根据日期顺序填充表

来自分类Dev

Ruby on Rails:select_tag如何根据所选值显示

来自分类Dev

根据选定的下拉菜单更改标签[Ruby on Rails 4.2]

来自分类Dev

根据字符数拆分字符串Ruby on Rails

来自分类Dev

根据Ruby,Rails上的数组键类型生成新数组

来自分类Dev

根据选定的下拉菜单更改标签[Ruby on Rails 4.2]

来自分类Dev

如何根据 ruby on rails 中的参数限制请求

来自分类Dev

根据指定的元素值合并数组 - Ruby on Rails

来自分类Dev

Ruby on Rails:如何根据日期范围查询关系对象

来自分类Dev

AngularJS-在哪里放置第三方插件默认值?

来自分类Dev

在哪里放置Adobe Premiere Pro CS6的第三方插件?

Related 相关文章

  1. 1

    Ruby on Rails第三方集成代码放置的最佳实践

  2. 2

    Ruby on Rails Web应用程序的第三方API数据

  3. 3

    Ruby on Rails Web应用程序的第三方API数据

  4. 4

    在我的Rails应用程序中,负责进行第三方API调用的类在哪里?

  5. 5

    第三方JS库在哪里?

  6. 6

    在Magento中存储第三方服务凭据的“正确”位置在哪里?

  7. 7

    根据条件搜索不同的模型[Ruby on Rails]

  8. 8

    Laravel(4.2):在哪里放置第三方API连接?

  9. 9

    根据Ruby约定在哪里放置配置块?

  10. 10

    OpenID Connect服务器。根据第三方令牌生成访问令牌(社交登录)

  11. 11

    如何通过Firebase调用第三方API?

  12. 12

    调用第三方API时处理CORS

  13. 13

    使用第三方OAuth2服务将SPA / REST应用的refresh_token存储在哪里?

  14. 14

    Android Proguard-保留所有第三方库是否是最佳实践?

  15. 15

    iOS Framework构建:与第三方库链接的最佳实践是什么?

  16. 16

    在Haskell中处理来自第三方库的数据类型的最佳实践?

  17. 17

    与您自己的依赖项共享第三方依赖项的最佳实践

  18. 18

    Android Proguard-保留所有第三方库是否是最佳实践?

  19. 19

    Haml,Ruby on Rails,如何根据日期顺序填充表

  20. 20

    Ruby on Rails:select_tag如何根据所选值显示

  21. 21

    根据选定的下拉菜单更改标签[Ruby on Rails 4.2]

  22. 22

    根据字符数拆分字符串Ruby on Rails

  23. 23

    根据Ruby,Rails上的数组键类型生成新数组

  24. 24

    根据选定的下拉菜单更改标签[Ruby on Rails 4.2]

  25. 25

    如何根据 ruby on rails 中的参数限制请求

  26. 26

    根据指定的元素值合并数组 - Ruby on Rails

  27. 27

    Ruby on Rails:如何根据日期范围查询关系对象

  28. 28

    AngularJS-在哪里放置第三方插件默认值?

  29. 29

    在哪里放置Adobe Premiere Pro CS6的第三方插件?

热门标签

归档