Ruby on rails ROR:发送对象作为响应
我有2个ruby on rails应用程序。在应用程序A中,我发布应用程序B的一些数据(以散列形式)。然后,我希望应用程序B在响应中将此数据的散列(经过一些修改)发送回应用程序aRuby on rails ROR:发送对象作为响应,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有2个ruby on rails应用程序。在应用程序A中,我发布应用程序B的一些数据(以散列形式)。然后,我希望应用程序B在响应中将此数据的散列(经过一些修改)发送回应用程序a 我已经尝试了下面的代码应用程序A response = Net::HTTP.post_form(uri, params) quotes.push(response.body) 和在应用程序B中 details = get_details //returns a hash respond_with details 但
我已经尝试了下面的代码
应用程序A
response = Net::HTTP.post_form(uri, params)
quotes.push(response.body)
和在应用程序B中
details = get_details //returns a hash
respond_with details
但它不起作用。我所做的可能吗?有没有一种方法可以将这个散列放入我的响应中?
任何帮助都将不胜感激。rails的方法是使用JSON作为交换格式。请参阅指南,了解如何使用: 也可以用于这种通信。它允许直接访问rails API。解决方案#1 如果将
respond_与
一起使用,则还需要指定应用程序应响应的格式。为此,您应该使用方法
例如:
class TestController < ApplicationController
respond_to :json
def index
details = get_details
respond_with(details)
end
end
class TestController < ApplicationController
def index
details = get_details
render json: details
end
end
在应用程序A
response.body
中将包含一个字符串,其中包含来自应用程序B的数据。因此,您需要解析该字符串
在应用程序A中:
require 'json' # this is unnecessary if app A is a Rails app
response = Net::HTTP.post_form(uri, params)
parsed_response = JSON.parse(response.body)
quotes.push(parsed_response)
这不是“Rails”的方式,它更大,现在是web方式。支持JSON的框架和语言实现了跨语言兼容性。Rails这样做是因为这个原因。@theTinMan您也可以使用XML:)是的,但是XML和/或使用SOAP是2000年的事。JSON更加紧凑,并且可以立即使用。我们也可以使用CSV。json对象将如何显示在响应中?在回答中。身体还是其他地方?是的,没错。response.body将包含数据。但是你需要解析它。我已经更新了我的答案,请检查。