2015-10-09 86 views
0

我似乎無法找到關於此任何地方的信息。在Express.js路由命名參數

我希望能夠做到的要求是這樣的:url/list/message=hello?id=1234

但是就像我已經說過了,我一直沒能找到如何做到這一點發表任何信息。

我最初的猜測是要做到這一點:

app.put('/list/message=:msg?id=:id', function (req, res) { ... }); 

但是這完全不是那麼回事。 Express有沒有辦法做到這一點?

+1

'網址/列表/消息=你好ID = 1234'看起來相當不尋常。你不是指'url/list/hello?id = 1234'?看看http://expressjs.com/4x/api.html#router.param –

回答

0

你所指的通常被稱爲查詢字符串,我們在節點中有一個功能強大的URL解析庫來處理這個問題。

試試這個:

require('url'); 
... 
var url_parts = url.parse(req.url, true); 
var query = url_parts.query; 

然後,您可以使用query.id,並得到1234,如果你改變你的路線,這一點:

app.put('/list/message=:msg', function (req, res) { ... }); 

理想情況下,你應該檢查query.id嘗試之前就存在從它讀取。我也建議不要使用message=:msg。相反,我會重寫整個事情

app.put('/list/:id', function (req, res) { 
    var url_parts = url.parse(req.url, true); 
    var query = url_parts.query; 
    if (query.message) {...} 
}); 

比你目前有一個稍微不同的結構,但更符合API的大量如何處理它們的路由。

0

你不能這樣做。你可以做的是:

app.put('/list/message/:msg', function (req, res) { 
    var msg = req.params.msg; 

    var url = require('url'); 
    var id = url.parse(req.url, true).query.id;  
}); 

你的URL看起來像這樣:?網址/列表/消息/你好ID = 1234