[英]Are the route handlers in express called synchronously or asynchronously?
我在routes.js
文件中有兩個重定向:
app.get('*', blockingController01);
app.get('/test', controller02);
問題是,我有一個“阻止目標網頁”,您必須在其中輸入有效的代碼才能訪問網站的其余部分。 blockingController01
發送帶有表單的渲染頁面以輸入代碼。 如果用戶沒有輸入正確的代碼,則如果他/她輸入“ / test”或其他任何代碼,則該頁面應重定向到insert code
頁面。
我試圖解決此問題,只是在代碼頁的開頭放置了一個控制器,並使用通配符*覆蓋了所有路徑。 所以我想知道兩件事:
謝謝!
控制器(路由處理程序)不是並發調用的(這就是我所說的“異步”的意思)。
它們按照其定義順序被調用,因此在您的情況下,將為所有GET
請求調用blockingController01
。
如果令牌正確,則該控制器可以將請求傳遞給與URL匹配的其他路由處理程序。
這是您要執行的操作的一個非常基本的示例:
app.get('*', (req, res, next) => {
if (req.query.token !== '12345') {
// You would use `res.render()` here, this is just a quick demo:
return res.send(`
<form>
Please enter a token and press enter: <input type=text name=token>
</form>
`);
}
next();
});
app.get('/test', (req, res) => {
res.send('<h1>Correct token!</h1>');
});
因此,任何GET
請求都將到達第一個路由處理程序,該處理程序將檢查令牌的有效性(在這種情況下,它僅檢查查詢字符串參數token
的值是否為“ 12345” 。如果不是,它將呈現一個表單,但是如果令牌匹配,它將調用next()
,它將請求傳遞給第二個路由處理程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.