[英]Named arguments in routing in Express.js
我似乎在任何地方都找不到有關此信息。
我希望能夠發出如下請求: url/list/message=hello?id=1234
但是,就像我說過的那樣,我無法在Express中找到有關如何執行此操作的任何信息。
我最初的猜測是這樣做:
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
之前檢查其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 / list / message / hello?id = 1234
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.