使用中间件和控制器处理HTTP请求的区别

时间:2011-03-01 23:14:23

标签: ruby-on-rails ruby http ruby-on-rails-3 middleware

我正在使用Ruby on Rails 3,我想知道使用中间件处理HTTP请求(拦截请求URL请求和执行响应)与控制器流(使用respond_to)有什么区别。

检查日志文件,我可以看到中间件加载和查询几乎就像调用控制器方法一样。这是因为,在后一种情况下(调用控制器),如果HTTP请求是针对JSON数据的,则RoR不呈现模板文件(它是“自动进程”?!)。

所以,你怎么看?

1 个答案:

答案 0 :(得分:0)

使用Rack Middleware的最大优势之一是您可以过滤响应 - 例如,以某种方式修改然后让它采取正常的过程。查看标准Rails 3应用程序中的rake middleware,查看Rails用于执行会话,闪存,甚至基于应用程序自己的routes.rb路由的所有中间件堆栈。当然,如有必要,中间件也可以终止响应过滤并充当请求端点。

类似于中间件的功能,但它充当端点,是Rails Metal,允许您在必要时从应用程序中获得一些额外的性能(假设您不需要完整的Rails堆栈)。

我建议您查看以下Railscast: