【发布时间】:2010-02-08 05:15:42
【问题描述】:
在我的 Rails 应用程序中,我想生成与“真正的”HTTP 请求行为相同的请求。
举一个有些人为的例子,假设我正在创建一个系统,可以批处理传入的 HTTP 请求以供以后处理。它的界面类似于:
- 通过通常的 CRUD 方法创建新的批处理资源(POST,接收新创建资源的位置)。
- 通过向批处理资源发送 URL、HTTP 方法和数据来更新批处理资源,这些数据将被添加到它应该稍后批量执行的请求集合中。
- “处理”批处理资源,其中它将遍历其请求集合(每个请求可能由 URL、HTTP 方法和一组数据表示),并以某种方式告诉 Rails 在就像他们正常的“非批量”请求一样。
在我看来,要使其正常运行,需要完成两项重要的工作:
首先,传入的请求需要以某种方式保存以备后用。这可能只是保存传入请求的各个方面的情况,例如路径、方法、数据、标头等,它们已经作为控制器内传入请求对象的一部分公开。如果有一种更“自动”的方式来处理这个问题会很好——可能更像是对象编组或序列化——但是记录单个参数的蛮力方法也应该可以工作。
其次,保存的请求需要能够在以后重新注入到 Rails 应用程序中,并经历与普通 HTTP 请求相同的过程:路由、控制器、视图等。我'我希望能够捕获字符串中的响应,就像 HTTP 客户端会看到的那样,我还希望使用 Rails 的内部机制来做到这一点,而不是简单地使用 HTTP 库来让应用程序真正实现对自己的新请求。
想法?
【问题讨论】:
标签: ruby-on-rails ruby