使用Node和Express将查询字符串作为实际字符串传递给请求

时间:2016-04-23 23:03:12

标签: javascript node.js express

所以,基本上我正在做的是抓取一个网页,获取我想要的所有数据并将其显示在我网站的网页上。在抓取此特定页面时,我需要'href'标记内的链接。但是,此特定站点不使用常规链接。 'href'标签内部是一个查询字符串。我的计划是采取'href'中的内容并创建一个url来发出我的下一个请求,但是现在当我尝试将查询字符串传递到url时,我无法通过req.params在Node中访问它

我想知道是否有一种方法可以传递查询字符串而服务器认为它不是查询字符串,或者我是否必须使用req.query来获取所有参数并从头开始再次构建URL?

以下是我所谈论的一些例子:

page1.ejs:

<a href="/display/<%= some.href %>"></a>

some.href =“?variable = bleh”

服务器端处理:

app.get('/display/:string', function(req, res) {
  var url = "http://theurlineed.com/" + req.params.string;
});

此代码不起作用。当我点击链接时,它告诉我它无法获取/显示/?variable = bleh

1 个答案:

答案 0 :(得分:1)

您需要对查询字符串进行编码,以使其不被视为URL中的查询字符串:

some.href = encodeURIComponent("?variable=bleh");

那么您的网址将是:/display/%3Fvariable%3Dbleh。正如评论中所提到的,Express会自动解码req.params.string中的值,因此它将是正确的值。