2015-12-23 36 views
1

我需要了解這行代碼是指http請求中的這種語法是什麼意思?

app.get("https://stackoverflow.com/users/:id", function(req, res){ 
     var data = userModel.find().where('username', req); 
     res.send(data); 
    }); 

,我不明白的是那部分「/用戶/:ID」,特別是:ID部分。這個http請求的語法是什麼意思?

+1

相關:http://stackoverflow.com/questions/20089582/how-to-get-url-parameter-in-express-node -js – dan08

+0

這不是一個Node.js的東西,因爲它是一個Express事物(這是一個Node框架)。 「:id」表示可變路徑。你可以從請求中獲取「id」的值,但我不太清楚表達的意思,所以請等待其他人前來。 – ndugger

+0

根據[RFC3986](http://tools.ietf.org/html/rfc3986#section-3.3),':'是除第一個組件之外的URL中的路徑組件中的普通合法字符。所以它不應該在客戶端做任何特殊的事情。在服務器中,它可以做任何事情,就像任何其他路徑組件一樣。 –

回答

1

在你有上面的代碼,發送一個GET請求到/users/42將導致42被存儲在req.params.id

從本質上講,:id告訴表達無論是在要求URI :id在路由聲明應被理解存儲與id屬性名稱的req.params對象。

你很可能想更多類似這樣的東西:

app.get("https://stackoverflow.com/users/:id", function(req, res){ 
    var data = userModel.find().where('id', req.params.id); 
    res.send(data); 
}); 
1
Express uses the : to denote a variable in a route. 
For example /user/42 will render a request for user id - 42 
      /user/7 will render a request for user id - 7 
but can be represented as a consistent form /users/:id 
where id is the variable, : represents that whatever is after it is a 
variable, like here we have :id - id being the variable. 

for reference check this out: http://expressjs.com/en/api.html