2015-06-06 67 views
3

我有一個簡單的節點/快遞航線,具體如下:傳遞一個URL作爲參數傳遞給節點/快速應用

var app = express(); 

app.get('gettags/:page', function(request,response) 
{ 
    var thePage = request.params.page; 
    ... 
    ... 
} 

我遇到的問題是,如果我通過一個URL作爲參數,我收到「無法獲取」錯誤。所以,如果我這樣稱呼:

http://www.mynodeapp.com/gettags/http://www.someurl.com/?withquery=something 

我得到「無法獲取」錯誤。自從使用Node之後已經過去幾年了,所以我可能會忘記一些非常基本的東西。但是我無法克服這個問題,Google搜索這個問題還沒有發現任何有用的東西。

感謝您的幫助!

回答

3

你節點的代碼看起來很好,但這個工作你需要URI編碼你的論點:

var url = 'http://www.mynodeapp.com/gettags/' + encodeURIComponent('http://www.someurl.com/?withquery=something') 

//becomes: http://www.mynodeapp.com/gettags/http%3A%2F%2Fwww.someurl.com%2F%3Fwithquery%3Dsomething 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

+0

啊,這麼。謝謝你的提醒。但是,編碼該參數仍會產生此「無法GET」錯誤。如果我傳遞了除URL之外的其他內容,則不會拋出任何錯誤。只是一個網址 - 但這是我需要傳遞的。我爲此感到困惑。感謝您的時間! – Lew

+0

您需要在* HTTP請求*中編碼URI,而不是在一個node.js一側。 –

+0

請注意,表達''/ foo /:bar'參數機制會用'/'字符分割URI路徑。你會注意到,如果你嘗試'http:// www.mynodeapp.com/gettags/foo/bar',你會得到相同的「無法獲取」錯誤。 –

相關問題