簡體   English   中英

Express.js中路由中的命名參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM