rails 将 HTTP POST 存储到变量中

rails storing HTTP POST into variable

我正在尝试构建一个 rails 应用程序来接收具有巨大 XML 负载的 HTTP post。目标是解析 XML 并将部分内容存储到数据库中。我的第一个目标是能够将 XML 内容存储到一个变量中并逐行解析该变量。从此处提供的问答中,我能够使用以下代码接收 HTTP Post.

问题是 rails 应用程序正在将 XML 内容吐回浏览器。我现在只想让 rails 应用程序接收 XML、store 和 return 200 ok 到浏览器。我该如何完成?

路线

post '/request' => 'application#receives_data'

控制器

def receives_data
  myXMLPost = render :text => request.raw_post
end

当我尝试以下代码时

def receives_data
  myXMLPost = request.raw_post
end

我在 development.log

中收到此错误

ActionView::MissingTemplate (Missing template application/receives_data with {:locale=>[:en], :formats=>[:html, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: * "/opt/rails/CCH/app/views"

感谢阅读

 render :text => request.raw_post

这部分说 "render the text that is the raw XML post back to the browser" - 所以如果你不希望它呈现 XML - 然后不要有这一行。

如果你只想渲染一个 200,那么只渲染一个 200。 您可以使用 header-only render

head :success

所以:

def receives_data
  myXMLPost = request.raw_post
  head :success
end

"creating the XML" 是一个练习,我将留给 reader(就是你)...它是 rails 的一个非常标准的部分,这意味着它将由关于 rails 的标准教程...我建议您对 google 进行一些研究,以获得涉及 xml 的 rails 教程,例如“rails tutorials xml