如何将网址作为" url参数"在快递?

时间:2017-03-24 19:47:27

标签: javascript node.js express routing url-parameters

在我的快递应用程序中,我有一个收听api/shorten/的路由器:

    router.get('api/shorten/:longUrl', function(req, res, next) {
        console.log(req.params.longUrl);
    }

当我使用类似的东西时:

http://localhost:3000/api/shorten/www.udemy.com

我得到了www.udemy.com这就是我的期望。

但是当我使用时:

http://localhost:3000/api/shorten/http://www.udemy.com

我收到404错误。

我希望在访问http://www.udemy.com时获得req.params.parameter

4 个答案:

答案 0 :(得分:10)

我不确定你是否还在寻找这个问题的解决方案。也许只是为了防止其他人试图弄清楚同样的事情,这是解决问题的简单方法:

app.get('/new/*', function(req, res) {

  // Grab params that are attached on the end of the /new/ route
  var url = req.params[0];

这样你就不必为任何被误认为路线或目录的正斜杠而流汗,它会在/ new /后抓住所有东西。

答案 1 :(得分:1)

您需要在客户端使用encodeURIComponent,在快速服务器中使用decodeURIComponent,这将对来自url参数的所有不允许的字符进行编码,例如:和{{1} }

答案 2 :(得分:0)

你需要逃避:

escape("http://www.google.com")

返回:

"http%3A//www.google.com"

答案 3 :(得分:0)

我只想补充一下,如果您将?param=some_param之类的其他参数传递到“ url参数”中,它将不会显示在req.params[0]中。 相反,您可以只使用req.url属性。