Ruby on rails 在ruby中从post请求创建对象

Ruby on rails 在ruby中从post请求创建对象,ruby-on-rails,ruby,json,rest,post,Ruby On Rails,Ruby,Json,Rest,Post,这个问题是关于我正在构建的两个rails应用程序。我正试图了解Rails和restful web服务。大部分代码都是伪代码,但如果需要,我想我可以尝试一些示例 还有一些基本的rails和web请求 假设我有rails程序A和B,我希望A发送一个post请求,该请求基本上包含一个JSON格式的对象(不是必需的,而是计划好的),B接收它并将其转换为我想要的对象。这是我的计划或想法,我希望得到一些反馈 所以现在把重点放在B上 像这样的url 127.0.0.1:8080/接收 将链接到以下内容 def

这个问题是关于我正在构建的两个rails应用程序。我正试图了解Rails和restful web服务。大部分代码都是伪代码,但如果需要,我想我可以尝试一些示例

还有一些基本的rails和web请求

假设我有rails程序A和B,我希望A发送一个post请求,该请求基本上包含一个JSON格式的对象(不是必需的,而是计划好的),B接收它并将其转换为我想要的对象。这是我的计划或想法,我希望得到一些反馈

所以现在把重点放在B上

像这样的url

127.0.0.1:8080/接收

将链接到以下内容

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])
很多教程似乎都专注于发送post请求,但从未接收或处理它们。有人给我指出正确的方向吗


为了一个

我知道如何发送邮寄请求

 @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的问题是如何在post请求中发送@myJsonHash。或者这真的很愚蠢,我误解了要求吗?

您将收到参数中的数据。您应该知道哪些参数包含什么

def receive
  @object = Object.new({:name => params[:name], :address => params[:address] })
  if @object.save
    #ok
  else
    #error
  end
end

当心跨站点帖子,您应该实现某种身份验证。

在应用程序A和应用程序B之间有一个通信层:HTTP

HTTP定义了请求类型,其中一种是POST

当POST请求点击rails应用程序时,所有发布的数据都可以通过控制器中的
params
方法访问

最好从解释应用程序应该如何发送post请求开始

 @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
看看这个宝石:

允许您以最少的代码量发送各种请求:

class BParty
  include HTTParty

  base 'http://b'

  def self.pass(object)
    post('/receive', :body => {:object => object.to_json})
  end
end
现在,向B应用程序发送post请求非常简单

BParty.pass(object)      
就这样。现在,在应用程序B端,您只需执行以下操作:

@object = JSON.decode(params[:object])

希望这能有所帮助,如果我输入错误,不要踢我——所有的代码都是从头开始的,没有测试参数。是从URL自动传入的吗?谢谢,你可以买的automatically@apeneadiving我离得不远。如果没有完整的示例代码(包括JSON位),我不应该发布这个问题。你的回答是正确的。我应该用零碎的东西编辑这个问题还是重新开始?最好的做法是接受答案并创建一个更精确的问题。我已经将问题分为a和B。问题说有两个部分,但我将开始另一个线程不要让stringParams混淆。这是传递的字符串,而不是发送到的目标URL。offtopic:camel case作为实例变量在Ruby/Rails中是不好的做法。使用@my_json_hash而不是@myJsonHash.@keymone很好。我的高级开发人员在这个问题上一直都很阴暗。他只是想保持一致