0

我有一个 Rails 应用程序,它充当 XML 服务 API 的传递。

主要用例如下:

  1. 用户通过http://example.com/model/report向 Rails 发布参数。为简洁起见,假设表单只是提交zip_code=90010
  2. Railszip_code通过 GET 请求获取并使用 RestClient 查询外部 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 提要抓取,因此它不适合作为每晚运行的延迟作业。它必须 24/7 全天候响应动态请求。

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

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

那么...模型还是控制器?

谢谢!

4

1 回答 1

1

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

这样就更容易对类进行单元测试以进行解析或您想要对返回的 XML 执行的任何其他操作。

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

更新:这种方法的一个优点是,即使您将服务换成其他东西,您的代码库也可以保持不变,因为您的代码库与此类交互,只需对此类进行更改。接口优势:)

于 2012-07-27T20:04:24.957 回答