【发布时间】:2015-12-28 12:46:13
【问题描述】:
我目前有一个用于我的一个项目的 API 和一项服务,该服务负责将导出文件生成为 CSV、存档并将它们存储在云中的某个位置。
由于我的 API 是用 Rails 编写的,而我的服务是用纯 Ruby 编写的,所以我在服务中使用 Her gem 与 API 进行交互。但是我发现我当前的实现性能较差,因为我在我的服务中做了一个Model.all,这反过来又会触发一个请求,该请求可能在响应中包含太多对象。
我很好奇如何改进整个任务。这是我的想法:
- 在 API 级别实现分页并从我的服务中调用
Model.where(page: xxx); - 在 API 级别生成实际的 CSV 并将 CSV 发送回服务(这可以同步或异步完成)。
如果我使用第一种方法,我应该在每页检索多少个对象?响应应该有多大?
如果我使用第二种方法,这会给请求带来相当大的开销(我猜 API 请求应该不会花那么长时间),我还想知道这是否真的是 API 的工作。
我应该遵循什么方法?或者,我还缺少什么更好的东西?
【问题讨论】:
标签: ruby-on-rails api rest csv export