2017-08-07 22 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