Rails XML解析——我应该把这个功能放在控制器或模型中吗



我有一个Rails应用程序,它可以作为XML服务API的通道。

主要用例如下:

  1. 用户通过将参数POST到Railshttp://example.com/model/report.为了简洁起见,假设表单只是提交zip_code=90010
  2. Rails获取zip_code并使用RestClient通过GET请求查询外部XML服务API:http://xmlservice.example.com/report?report_id=1&zip_code=90010
  3. 报告响应通过XML返回。我想通过Nokogiri解析XML,并通过report.HTML.erb输出一个普通的HTML视图

我正在努力想办法把我的XML(Nokogiri)代码放在哪里。我应该在我的模型中处理XML,还是在控制器进行所有解析?

我知道这两种方法都能奏效,但我想知道最好的做法是什么。这也是而不是后台XML提要抓取,所以它不适合作为每晚运行的延迟作业。它必须全天候响应动态请求。

请记住,我已经从我的应用程序中删除了ActiveRecord以进行优化。此应用程序不接触任何数据库。它基本上是对将为客户端呈现HTML输出的XML API的传递。

我读过最好使用"瘦控制器"one_answers"胖模型",但我看到的大多数Nokogiri示例的控制器中都有doc = Nokogiri::XML(RestClient.get(myurl, myparams))类型的代码。

所以。。。模型还是控制器?

谢谢!

我将把代码放在一个类中,该类将获取xml并为您解析xml。

这样可以更容易地对类进行单元测试,以便对返回的XML进行解析或任何其他操作。

类可以放在lib文件夹中,或者如果它有点像伪模型(带有XML数据库),也可以放在Models中。这主要取决于类是什么以及您希望如何构建代码库。

更新:除此之外,即使将服务换成其他服务,代码库也可以保持不变,因为代码库与此类交互,因此只能对此类进行更改。接口优势:)

相关内容

  • 没有找到相关文章

最新更新