无法GET(传递url作为参数)

时间:2016-10-01 02:36:41

标签: node.js express

express中的路由可以不将完整的URL作为参数吗?

例如,

router.get("/new/:url", <some function>);
当:url为https://www.google.com

时,

给出了Can not GET错误

3 个答案:

答案 0 :(得分:1)

  

你不能像这种格式那样得到完整的URL。这种格式用于获取客户发送的参数

 router.get("/new/:url", <some function>);
    //you can get url as params
    req.params.url//Use your URL

答案 1 :(得分:0)

我认为您对ExpressJS routing并不太了解,因为您的网址https://www.google.com // ,这是使用路由分离。

在您的情况下,我们知道ExpressJS支持正则表达式路由。我认为跟随正则表达式会对你有用

app.get("/new/:protocol(http:|https:|ftp:)?/?/:url", <some function>);

在上面的例子中,你已经使用有限的协议http,https和ftp进行了限制。您可以使用 | 分隔符(或条件)添加更多协议,甚至您也不知道您希望遵循的协议是什么

app.get("/new/:protocol?/?/:url", <some function>);

在上述两个路线中, ? 表示路由工作文件的选项

在您的函数中,您可以在URL中附加协议,如

function newUrl(req, res) {
    if(req.params.protocol)
        req.params.url = req.params.protocol + '//' + req.params.url;
    console.log(req.params.url);
}

答案 2 :(得分:0)

您应该在发送前对url参数进行编码。您的示例编码为Http%3A%2F%2Fwww.google.com。在服务器端,您可以解码参数以从之前获取值。