2015-03-24 139 views
2

对不起,如果这个问题是另一个问题的重复,但我还没有找到它。Combine Rack :: Builder和Rack :: Cascade

我有一些葡萄API(Rack应用程序),其中一个(用户API)使用中间件进行身份验证。

在我的config.ru文件中,我通过Rack :: Cascade将所有API组合到了一个应用程序中。代码如下:

user_management = Rack::Builder.new { 
    use Middleware 
    run UserAPI.new 
} 
app = Rack::Cascade.new [ 
    user_management, 
    ExampleAPI1, 
    ExampleAPI2, 
    ExampleAPI3 
] 

问题是每当有任何API获取请求时,都会调用中间件。

有没有人有关于如何仅在用户API获取请求时才使用中间件的建议?

回答

0

的这个问题的答案是,我不得不删除资源(例如资源:用户)从API和再使用机架::构建如下:

app = Rack::Builder.new { 
    map '/user' do 
     use Middleware 
     run ExampleAPI1 
    end 

    map '/items' do 
     run ExampleAPI2 
    end 

    map '/locations' do 
     run ExampleAPI3 
    end 

    map '/reports' do 
     run ExampleAPI4 
    end 
} 

问题与机架级联::是它从上到下尝试每个应用程序,直到找到合适的端点