机架:管理客户端和服务应用程序响应

我正在使用Ruby on Rails 3,我在服务应用程序上正确设置Rack中间件行为时遇到了一些问题,以便使用来自客户端应用程序的传入请求。

我改变了我的代码


第一个代码


# application.rb config.middleware.use "Rack::Api::User" # lib/rack/api/user.rb module Rack module Api class User def initialize(app) # Changed part @app = app end def call(env) # Changed line if env["PATH_HOST"] =~ /^\/api\/user\//i # Changed line @app.call(env) # Changed line else [200, {}, ["Nope, missed it. Here's env:\n" + env.inspect]] end end end end end 


第二个代码


来自作者的 这个代码 ( 注意 :作者已经更新了代码,所以不再可能引用它。但是我想要的行为如下所述)。 我做了这个改变是因为我在路由机架上遇到了麻烦 。


在第一个代码中,我能够从客户端发出请求并接收来自服务的响应。 只是要知道在这种情况下, if env["PATH_HOST"] =~ /^\/api\/user\//i@app = app代码不会产生错误。

使用第二个 (参见代码的链接)我无法处理来自客户端的请求,我再也无法访问它们了’env [“HTTP_VARIABLES”]’:我总是回复包括服务变量(可能因为没有initialize方法和self.call(env)语句。

我需要的是访问服务应用程序的“/ api / user / 1”`URL以控制客户端服务应用程序的请求

  • 尝试向“service / api / user / 1”URL发出请求的客户端应该收到服务的响应
  • 试图向其“service / api / user / 1”URL发出请求的服务应该在其根目录下重定向

我认为所有的改变都应该在服务方面。 那么, 为了正确设置Rack中间件行为我必须做些什么呢?