我似乎無法找到關於此任何地方的信息。在Express.js路由命名參數
我希望能夠做到的要求是這樣的:url/list/message=hello?id=1234
但是就像我已經說過了,我一直沒能找到如何做到這一點發表任何信息。
我最初的猜測是要做到這一點:
app.put('/list/message=:msg?id=:id', function (req, res) { ... });
但是這完全不是那麼回事。 Express有沒有辦法做到這一點?
我似乎無法找到關於此任何地方的信息。在Express.js路由命名參數
我希望能夠做到的要求是這樣的:url/list/message=hello?id=1234
但是就像我已經說過了,我一直沒能找到如何做到這一點發表任何信息。
我最初的猜測是要做到這一點:
app.put('/list/message=:msg?id=:id', function (req, res) { ... });
但是這完全不是那麼回事。 Express有沒有辦法做到這一點?
你所指的通常被稱爲查詢字符串,我們在節點中有一個功能強大的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的大量如何處理它們的路由。
你不能這樣做。你可以做的是:
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
'網址/列表/消息=你好ID = 1234'看起來相當不尋常。你不是指'url/list/hello?id = 1234'?看看http://expressjs.com/4x/api.html#router.param –