簡體   English   中英

結合Rack :: Builder和Rack :: Cascade

[英]Combine Rack::Builder and Rack::Cascade

抱歉,這個問題是另一個問題的重復,但是我還沒有找到。

我有一些Grape 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收到請求時,有人對如何使用中間件有任何建議嗎?

這個問題的答案是我必須從API中刪除資源(例如resource:user),然后按如下所示使用Rack :: Builder:

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
}

Rack :: Cascade的問題在於,它會嘗試從上到下的每個應用程序,直到找到合適的端點為止

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM