我有一个Rails应用程序,它可以作为XML服务API的通道。
主要用例如下:
- 用户通过将参数POST到Railshttp://example.com/model/report.为了简洁起见,假设表单只是提交
zip_code=90010
- Rails获取
zip_code
并使用RestClient通过GET请求查询外部XML服务API:http://xmlservice.example.com/report?report_id=1&zip_code=90010 - 报告响应通过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中。这主要取决于类是什么以及您希望如何构建代码库。
更新:除此之外,即使将服务换成其他服务,代码库也可以保持不变,因为代码库与此类交互,因此只能对此类进行更改。接口优势:)