2017-08-07 88 views
1

使用Node.js和Express,我如何接受URL作为参数?作为Express中的参数的URL

http://example.com/site/http%3A%2F%2Fgoogle.com

我有以下处理

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

而不是得到预期的回应,我收到了404:

所请求的网址/网站/ http://www.google.com没有被发现这个 服务器。

如果我要求example.com/site/hello它可以正常工作,但不适用于传递URL。我认为它的正斜线会导致问题。

有没有正确的方法来做到这一点?

+0

我建议你切换使用'req.query'而不是'req.params' –

+0

@FelixFong谢谢!你的方法有窍门,我会在 – Michael

+0

之后发布修正因为我之前有过这个问题,所以编码很快<3 –

回答

1

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

最好的办法是url encode帕拉姆和你的NodeJS方面,你将需要url decode

例子: https://www.google.comhttps%3A%2F%2Fwww.google.com

+0

你知道我需要把解码方法放在哪里,因为路由是由Express框架处理的吗? – Michael

+0

我认为这将有助于https://stackoverflow.com/questions/34576659/nodejs-express-encodes-the-url-how-to-decode 解码需要在您的处理程序。你的网址将是一个参数,你只需要解码param来让你的url返回 – sheplu