Javascript Express.js中路由中的命名参数
我似乎在任何地方都找不到这方面的信息 我希望能够执行如下请求:url/list/message=hello?id=1234 但正如我所说,我还没有找到任何关于如何在Express中实现这一点的信息 我最初的猜测是这样做的:Javascript Express.js中路由中的命名参数,javascript,rest,express,url-routing,Javascript,Rest,Express,Url Routing,我似乎在任何地方都找不到这方面的信息 我希望能够执行如下请求:url/list/message=hello?id=1234 但正如我所说,我还没有找到任何关于如何在Express中实现这一点的信息 我最初的猜测是这样做的: app.put('/list/message=:msg?id=:id', function (req, res) { ... }); 但这不太管用。在Express中有什么方法可以做到这一点吗?您所指的通常称为查询字符串,我们在node中有一个强大的URL解析库来处理这一点
app.put('/list/message=:msg?id=:id', function (req, res) { ... });
但这不太管用。在Express中有什么方法可以做到这一点吗?您所指的通常称为查询字符串,我们在node中有一个强大的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如下所示:URL/list/message/hello?id=1234URL/list/message=hello?id=1234看起来很不寻常。你是说url/list/hello?id=1234吗?看看