我有一个Rails应用程序,它充当XML服务API的传递。
主要用例如下:
zip_code=90010
。zip_code
并使用RestClient通过GET请求查询外部XML服务API:http://xmlservice.example.com/report?report_id=1&zip_code=90010 我正在努力弄清楚我的XML(Nokogiri)代码的放置位置。我应该在模型中处理XML还是在控制器中进行所有解析?
我知道这两种方法都有效,但我想知道最佳做法是什么。这也是不背景XML提要抓取,因此它不适合作为夜间运行的延迟作业。它必须24/7回答动态请求。
请注意,我已从我的应用中删除了ActiveRecord以进行优化。此应用程序不会触及任何数据库。它基本上是XML API的传递,它将为客户端呈现HTML输出。
我已经阅读过最好使用“瘦调控制器”和“胖模型”,但我看到的大多数Nokogiri示例都在控制器内部有doc = Nokogiri::XML(RestClient.get(myurl, myparams))
类型代码。
那么......型号还是控制器?
谢谢!
答案 0 :(得分:1)
我会将代码放在一个类中,该类将获取xml并为您解析xml。
通过这种方式,可以更轻松地对类进行单元测试,以便对返回的XML进行解析或任何其他操作。
该类可以放在lib文件夹中,或者如果它类似于Pseudo Model(带有XML数据库),它也可以放在模型中。这主要取决于类是什么以及您希望如何构建代码库。
更新:这种方法的一个优点,即使您将服务替换为其他内容,您的代码库也可以保持不变,因为您的代码库与此类交互,所以更改将不得不只针对这个班级。接口优势:)