2012-12-18 48 views
5

app.all()app.use()有什麼區別?當請求與任何類型的請求方法的特定URIapp.all和app.use有什麼區別?

+3

文檔([all](http://expressjs.com/api.html#app.all),[use](http://expressjs.com/api.html#app.use))很漂亮詳細介紹了兩者。你對什麼感到困惑? –

回答

7

app.all()將被稱爲(例如GET,POST,PUT或DELETE)

app.use()另一方面爲你可能有任何中間件更加有用因爲它「掛載」到路徑前綴上,並且在任何時候都會請求該路由下的URI。因此,例如app.use('admin/', isAuthorized)可能是一箇中間件,它將確保在「admin /」下訪問的任何URI(例如「admin/settings」或「admin/bing/bang」)僅由授權用戶請求。如果您不提供裝載路徑,則默認使用根URI「/」。

你可以使用水珠(例如app.all('admin/*', isAuthorized))做同樣的事情與app.all(),但app.use()確實從req.path這對於一些中間件是非常有用的剝離裝入URI的額外步驟。