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

时间:2015-06-06 19:48:39

标签: node.js express

我有一个简单的Node / Express路由,如下所示:

class CombineTag < ActiveRecord::Base
  belongs_to :habit
  belongs_to :goal
  belongs_to :quantified
  belongs_to :valuation
  belongs_to :user
  acts_as_taggable
end

class Habit < ActiveRecord::Base # Same goes for other models
  has_many :combine_tags
  acts_as_taggable
end

我遇到的问题是,如果我传递一个URL作为参数,我会收到“无法获取”错误。所以,如果我这样称呼:

var app = express();

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

我收到“无法获取”错误。我使用Node已经有几年了,所以我可能会忘记一些非常基本的东西。但我无法理解这一点,谷歌搜索这个问题并没有发现任何有用的东西。

感谢您的帮助!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您的代码中的问题是

  {p> /的http://www.someurl.com

因此,要克服这一点,请在节点中使用url编码功能,例如

encodeURIComponent("Your url goes here")