2013-11-21 96 views
1

我想獲得url參數,如果url被用戶錯誤定義,我需要發送一個錯誤。如何在Express中處理GET參數?

我的網址是:localhost:8080/user?id=1

如果用戶輸入的網址是:localhost:8080/use?id=1,我們該如何處理呢?

if (app.get("/user")) { 
    app.get("/user",function(req,res,next){ 
    console.log('In'); 
    }); 
} else { 
    console.log('something went wrong in url'); 
} 

回答

0

可以req.url使用解析解析功能從網址模塊:

這裏是the example從node.js的文檔:

node> require('url').parse('/status?name=ryan') 
{ href: '/status?name=ryan', 
    search: '?name=ryan', 
    query: 'name=ryan', 
    pathname: '/status' } 
3

無需爲if/else語句。只需列出所有路徑,並在末尾添加默認路徑。如果查詢與您的任何定義不匹配,它將調用默認路徑。

app.get("/user",function(req,res){ 
    res.send('called user'); 
}); 

... 

app.get("/*", function(req, res){ 
    res.send('wrong path'); 
}); 

注意順序很重要,如果你把"/*"上方,它會主宰別人。所以它必須是最後一個。

0

app.get是一個事件處理程序。僅當請求與該路由匹配時纔會調用相應的callback。你不需要爲它指定一個if語句。你需要學習一些javascript以及事件/回調是如何工作的。我認爲this article看起來不錯。

0

app.get是一個事件處理程序。 不需要if條件。 我更喜歡你到url從

localhost:8080/user?id=1 

改變要

localhost:8080/user/1 

如果路徑即:本地主機:8080 /用戶/ 1沒有被定義,則freamwork自動顯示消息

不能獲取/用戶/ 1

app.get("/user/:id", function(req, res){ 
console.log('In userId = '+req.params.id); 
}) ; 

注意:ID,你可以使用這個名稱來訪問你的代碼。如果在你的網址多個變量的值,例如

localhost:8080/user/1/damodaran 

所以你app.get的樣子

app.get("/user/:id/:name", function(req, res){ 
console.log('In userId = '+req.params.id+' name:'++req.params.name); 
}) ; 

檢查這些鏈接

expressjs api

Express app.get documentation