我似乎无法找到关于此任何地方的信息。在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 –