Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express.js中路由中的命名参数_Javascript_Rest_Express_Url Routing - Fatal编程技术网

Javascript Express.js中路由中的命名参数

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解析库来处理这一点

我似乎在任何地方都找不到这方面的信息

我希望能够执行如下请求:url/list/message=hello?id=1234

但正如我所说,我还没有找到任何关于如何在Express中实现这一点的信息

我最初的猜测是这样做的:

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=1234

URL/list/message=hello?id=1234看起来很不寻常。你是说url/list/hello?id=1234吗?看看