[英]What is the difference between redirect and next in NodeJs?
我完全不了解這兩者之間的區別:
app.get('*', function(req, res, next) {
next();
//ROUTE 1
});
app.get('*', function(req, res) {
res.redirect('/some');
//ROUTE 2
});
app.get('/some', function(req, res) {
res.send("success");
//ROUTE 3
});
當我嘗試向ROUTE 1
發出請求時,我獲得了響應成功,但ROUTE 2
沒有顯示此響應。 這是為什么?
我想做的是:
每個請求都應該從ROUTE 1傳遞出去,並且應該將控制處理到SPECIFIC路由,我將在其中寫入ROUTE if-else
語句(與next()
,后者將控制發送到下一個MATCHING路由)。
例如:
app.get('*', function(req, res, next) {
if(x==y){
//call SPECIFIC route 3
} else {
// call SPECIFIC route 4 (another route)
//ROUTE 1
});
我試圖通過重定向來做到這一點,但是它不起作用。
謝謝。
編輯:
/checkIfSession
存在。 我將使用express-session來檢查會話中用戶的用戶名是否存在。 如果存在,我想送控制if
另有else
。
假設請求是:
(我只會調用第一個請求)。
編輯2:我嘗試了以下操作,但是當我請求時卻沒有得到任何回應:
app.use(function (req, res, next) {
if(2==2){
res.redirect("/session");
} else {
res.end("else");
}
});
app.get("/session", function(req, res){
res.write("session");
res.end();
});
app.get("/some", function(req, res){
res.write("some");
res.end();
});
要求: / some
我想如果您想讓路由首先通過某種身份驗證,則可以在路由中使用middleware
。
下面是示例代碼:
app.get('/some', checkSession, function(req, res) {
res.send("success");
});
// this is the middleware function
function checkSession(req, res, next) {
// do your checking here
if (x===y) {
next();
//continue users access to protected API
}
else {
res.redirect('/');
// redirect user to the default login page
}
}
在以上示例中,有2 Cases
情況1 :
x === y
從給定的示例開始,我假設用戶已登錄,因此,當用戶訪問網站的/some
部分時,他將從服務器接收Success
。
這是您next()
函數的使用,即它繼續執行該api或發送數據,無論用戶請求什么。 類似的內容可以continue
進行編程。
情況二 :
x!==y
現在是這種情況,即用戶not authenticated or logged in
並且用戶仍在嘗試訪問網站的/some
部分。 在這種情況下,用戶將被重定向到您為網站設計的任何login
頁面,以便他/她重新輸入其憑據。
在這里,您的redirect
功能將重定向用戶而不發送任何數據。 類似的break
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.