Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在rails应用程序中从我自己的API访问数据_Ruby On Rails_Ruby_Api - Fatal编程技术网

Ruby on rails 在rails应用程序中从我自己的API访问数据

Ruby on rails 在rails应用程序中从我自己的API访问数据,ruby-on-rails,ruby,api,Ruby On Rails,Ruby,Api,我有一个rails应用程序,上面有一个API,其他应用程序可以调用它。我感兴趣的是尝试从我自己的api获取数据,以便在同一个rails应用程序的页面上显示,而不使用gem 我怎么能做到这一点呢?我觉得正确的方法应该是将用于生成API响应的逻辑抽象到API和非API控制器都可以使用的级别。但是,如果您真的愿意,可以从另一个控制器调用API的控制器操作。不过,它很粗糙。要做到这一点,你需要做的就是 require 'open-uri' payload = open('https://people.c

我有一个rails应用程序,上面有一个API,其他应用程序可以调用它。我感兴趣的是尝试从我自己的api获取数据,以便在同一个rails应用程序的页面上显示,而不使用gem


我怎么能做到这一点呢?

我觉得正确的方法应该是将用于生成API响应的逻辑抽象到API和非API控制器都可以使用的级别。但是,如果您真的愿意,可以从另一个控制器调用API的控制器操作。不过,它很粗糙。

要做到这一点,你需要做的就是

require 'open-uri'
payload = open('https://people.com/api/v2/survey/search?value=test') #This is an instance of Tempfile, so you can call JSON.parse(payload) or view the payload as below
open('https://people.com/api/v2/survey/search?value=test').read

我确实认为这可能不是正确的体系结构决策,但我将此留给您来决定

您是否使用任何gem来生成输出,例如rabl或ActiveModel::serializer?或者只是做一个直接的
呈现json:results
?后者,
呈现json:results
是-这是一个想法。我同意,当你说它相当黑客化时,除了可能编写比需要更多的代码之外,你是否看到了这样做的负面影响?与其从一个控制器调用另一个控制器,不如创建一个新的中间对象,它们都可以调用。这还具有细化控制器逻辑的额外好处(这很好)。