URL作为Express中的参数

时间:2017-08-07 19:40:08

标签: node.js express url routing query-string

将Node.js与Express一起使用,如何接受URL作为参数?

https://bugs.eclipse.org/bugs/show_bug.cgi?id=179924

我有以下处理程序

app.get('/site/:dest', function (req, res, next) {
   res.end('URL = ' + req.params.dest);
});

而不是得到预期的响应我得到404:

  

在此未找到请求的网址/网站/ http://example.com/site/http%3A%2F%2Fgoogle.com   服务器

如果我请求example.com/site/hello,它可以正常工作,但不能传递URL。我假设它正在逃避导致问题的正斜线。

有没有正确的方法呢?

3 个答案:

答案 0 :(得分:1)

您需要对参数的URL进行编码。如果您只是将URL作为参数发送,则会遇到很多问题。

最好的办法是url encode参数,在你的nodejs方面你需要url decode

实施例: https://www.google.com将为https%3A%2F%2Fwww.google.com

答案 1 :(得分:1)

这是一种解决方法:

更改了路由,现在使用req.query

app.get('/', function (req, res, next) {
   res.end('URL = ' + req.query['site']);
});

现在,http://example.com/?site=http%3A%2F%2Fexample.com%2F%3Fhello%3Dworld%26foo%3Dbar按预期工作。

答案 2 :(得分:0)

对我有用

app.get('/site/*', function (req, res, next) {
  res.end('URL = ' + req.params[0]);
});