在我的快递应用程序中,我有一个收听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
。
答案 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
属性。