Node.js 将URL作为参数传递给Node/Express应用程序

Node.js 将URL作为参数传递给Node/Express应用程序,node.js,express,Node.js,Express,我有一个简单的节点/快速路线,如下所示: var app = express(); app.get('gettags/:page', function(request,response) { var thePage = request.params.page; ... ... } 我遇到的问题是,如果我传递一个URL作为参数,我会得到一个“cannotget”错误。所以,如果我这样称呼它: http://www.mynodeapp.com/gettags/http:/

我有一个简单的节点/快速路线,如下所示:

var app = express();

app.get('gettags/:page', function(request,response)
{
    var thePage = request.params.page;
    ...
    ...
}
我遇到的问题是,如果我传递一个URL作为参数,我会得到一个“cannotget”错误。所以,如果我这样称呼它:

http://www.mynodeapp.com/gettags/http://www.someurl.com/?withquery=something
我得到“无法获取”错误。自从我使用Node已经有几年了,所以我可能忘记了一些非常基本的东西。但我无法克服这一点,谷歌搜索这个问题也没有发现任何有用的东西


谢谢你的帮助

您的节点代码看起来不错,但要使其正常工作,您需要对参数进行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

代码中的问题是

/的

所以要克服这个问题,请在节点中使用url编码函数,例如

encodeURIComponent("Your url goes here")

啊,的确如此。谢谢你的提醒。但是,对参数进行编码仍然会产生此“无法获取”错误。如果我传递的不是URL,则不会抛出错误。只是一个URL,但这就是我需要传递的。我对此感到困惑。谢谢你抽出时间!您需要在HTTP请求中编码URI,而不是在node.js端。请注意,express'
/foo/:bar
参数机制将URI路径拆分为
/
个字符。如果您尝试
http://www.mynodeapp.com/gettags/foo/bar
您将得到相同的“无法获取”错误。此外,您不必使用express params语法,您可以自己执行
app.get('/gettags/*',…)
,使用未编码的URI,并解析
req.originalUrl
,但是,如果您需要在请求中添加任何其他路径或查询参数,那么这就更麻烦了。简单地对请求参数进行URI编码是一个简单得多的选项。但是您的“req.originalURL”实际上是一个更好的解决方案,因为我需要做的就是提取传递的URL,然后将其发送到另一个节点模块进行处理。所以这是可行的。再次感谢您的时间-谢谢!