这个问题是关于我正在构建的2个rails应用程序。我试图了解Rails和宁静的Web服务。大多数代码都是伪代码但如果需要,我想我可以尝试一些例子。
还会引入一些基本的rails和Web请求。
想象一下,我有一个rails程序A和B.我希望A发送一个post请求,它基本上包含一个用JSON格式化的对象(不是必需但是计划好的)和B来接收它并把它变成我想要的对象。所以至少是我的计划或概念,我希望得到一些反馈。
暂时关注B。
这样的网址
127.0.0.1:8080/receive
会链接到类似
的内容def recieve (assuming routes are setup correctly)
@object = (this is where im a bit lost. how do i receive it from URL)
@request = UserRequest.new(params[:request])
许多教程似乎专注于发送帖子请求但从未接收或处理它们。有人指出我正确的方向吗?
对于A
我知道如何发送帖子请求
@stringParams = 'www.stackoverflow.com'
@hostURL = 'http://127.0.0.1:20000/requests/add'
#This is a post request that needs to post json to my recieveing crawler
res = Net::HTTP.post_form(URI.parse(@hostURL),
{'url' => @stringParams})
#puts res.body
我知道如何从哈希
创建JSON对象 @myHash = HASH.new
@myHash =
{
"url" => 'www.stackoverflow.com'
#Assume theres more than one variable
}
@myJsonHash = @myHash.to_json
所以A的问题是如何在帖子请求中发送@myJsonHash。或者这是一件非常愚蠢的事情,我误解了这些要求吗?
答案 0 :(得分:2)
您将在参数中接收数据。你应该知道哪些参数包含什么。
def receive
@object = Object.new({:name => params[:name], :address => params[:address] })
if @object.save
#ok
else
#error
end
end
谨防跨站点帖子,您应该实现某种身份验证。
答案 1 :(得分:0)
HTTP定义请求类型,其中一个是POST
当POST请求到达您的rails应用程序时 - 所有POSTed数据都可以通过控制器中的params
方法访问
最好从解释应用程序应如何发送帖子请求开始
看看这个宝石:httparty
允许您使用最少量的代码发送所有类型的请求:
class BParty
include HTTParty
base 'http://b'
def self.pass(object)
post('/receive', :body => {:object => object.to_json})
end
end
对B应用程序发布请求现在就像
一样简单BParty.pass(object)
就是这样。现在在应用程序B方面,你只需要这样做:
@object = JSON.decode(params[:object])
希望有所帮助,如果我犯了拼写错误,请不要踢我 - 所有代码都来自头部而不进行测试