2017-10-18 134 views
1

正如我在问题标题中提到的,我想知道最佳方法来实现这个工作,我需要示例(非常简单的一个作为如下:)如何将2个导轨5个应用程序连接在一起API(导轨)和前端(导轨以及)

比方说我有具有1个控制器和例如简单

root 'main#index' 

和索引动作内1个动作的API我有

def index 
    @date = Data.today 
end 

然后我有另一个导轨呈现


如何传递这个@date作为JSON从API到其他应用程序,以使其应用程序,它会为前端工作?

我应该在其他应用程序上有相同的控制器吗?

如何连接并发送http请求并接收响应?


在此先感谢

+0

我想你可能意指'@date = Date.today'(你的版本说数据)。 – drosboro

回答

2

对于这样一个简单的例子,你可以做简单的东西:

def index 
    @date = Date.today 
    respond_to do |format| 
    format.json @date 
    end 
end 

但是,你最有可能会想处理更复杂的JSON响应,所以不久之后,您可能会想要使用类似Jbuilder gemActiveModel Serializers(我的首选方法)。

另一方面,您的前端需要发出HTTP GET请求。很多方法(和宝石)可以做到这一点,但一种常见的方法是使用内置的Net::HTTP类。

require 'net/http' 

url = URI.parse('http://backend.dev/main/index') 
request = Net::HTTP::Get.new(url.to_s) 
response = Net::HTTP.start(url.host, url.port) do |http| 
    http.request(request) 
end 

raise response.body.inspect 

在你的情况下,更好的方法可能是使用Active Resource gem。该gem允许您创建由REST API而不是数据库支持的模型。例如,如果你的API的应用程序提供基本的创建,读取,更新和销毁行动在下列URL的特定型号(姑且称之为Widget):

GET http://backend.dev/widget  # listing of widgets 
GET http://backend.dev/widget/1  # Read for widget id: 1 
POST http://backend.dev/widget  # Create new widget 
UPDATE http://backend.dev/widget/1 # Update widget id: 1 
DELETE http://backend.dev/widget/1 # Destroy widget id: 1 

然后在前端应用程序,你可以声明活动资​​源是这样的:

class Widget < ActiveResource::Base 
    self.site = "http://backend.dev" 
end 

将自动神奇地访问所有的API中的这些方法和行为非常像一个普通的活动记录模式。这样,您基本上就像“普通”rails应用程序一样设计前端应用程序,但使用基于ActiveResource的模型代替ActiveRecord。

但是我会注意到,现在做的更常见的事情是在Rails中构建您的API,并使用客户端JavaScript构建前端,使用类似JQuery或Angular的请求API。我不确定你通过分裂API和前端获得了什么,他们都是Rails应用程序 - 除非你有一个令人信服的理由,我只需构建一个处理API和前端应用程序的Rails应用程序,结束,或者构建Rails API + Angular(或类似的)前端。

+0

嗯,原因是我想创建一个处理所有逻辑的API,并且我想要用Angular创建一个真正好的前端,事情是,我现在不能够舒适地使用角度,所以我有分裂它,并使用轨道作为前端,因为它符合我目前的经验与前端,这将是一些像测试前端不是一个真实的,我不希望我的应用程序是单片,所以我可以使它前端,稍后结束,另外一个问题是我应该在哪里写这段代码?可能是我有一些铁轨的经验,但没有在这一部分。 –

+0

好的,在这种情况下,我可能会建议使用ActiveResource gem,它基本上允许您创建由API而不是数据库支持的模型(如正常)。这样,您的前端应用程序就会像“普通”应用程序一样构造。我已经在我的答案中添加了一部分内容 - 但您会仔细查看Active Resource自述文件。 – drosboro

+0

这就是我正在寻找的东西,或者至少它解决了一个严重的问题,我尝试了它,它工作,我有一些挣扎,不得不阅读文档,它的工作索引条目和添加新的条目数据库,我猜测它应该相同的更新和删除,非常感谢您的帮助:) –