有没有办法在Ruby on Rails中保持POSTed XML的机智?

时间:2018-02-09 16:51:32

标签: ruby-on-rails ruby xml ruby-on-rails-3 rack

我的Rails应用程序中有一个REST API,用户将发布XML。我知道Rails(在这种情况下可能是Rack)将发布的数据转换为params散列。

我很好奇是否有办法让Rails不将XML转换为params哈希?相反,我想将XML作为字符串。我宁愿不让Rails转换为哈希,然后使用to_xml将其转换回xml字符串。

2 个答案:

答案 0 :(得分:2)

XML数据应作为POST请求中的参数发送。在你的单元测试中,它看起来像这样:

xml = <<-XML
  <?xml version="1.0" encoding="UTF-8"?>
    <hash>
      <foo type="integer">1</foo>
      <bar type="integer">2</bar>
    </hash>
XML
post :my_api_path, { 'model_data': xml }

在您的控制器中,您将提取model_data参数(如果您想从中提取数据,则将其解析为XML):

class XmlPassingController
  def save
    # XML as a string
    pp params[:model_data]
    # XML used for attributes to create a model instance
    my_model = MyModel.from_xml(params[:model_data])
    pp my_model
  end
end

答案 1 :(得分:1)

这是我在控制器操作中需要做的事情,以从POST请求中获取原始xml:

request.raw_post

请求的raw_post方法将返回请求的原始主体。