如何在 express 中将 url 作为 "url parameter" 传递?
how to pass a url as a "url parameter" in express?
在我的 Express 应用程序中,我有一个路由器监听 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 错误。
我想在访问req.params.parameter
时得到http://www.udemy.com
。
你需要这样逃脱:
escape("http://www.google.com")
哪个returns:
"http%3A//www.google.com"
您需要在客户端使用 encodeURIComponent
,在 express 服务器中使用 decodeURIComponent
,这将对 url 参数中所有不允许的字符进行编码,例如 :
和 /
我不确定您是否仍在寻找解决此问题的方法。也许以防万一其他人试图弄清楚同样的事情,这是解决您的问题的简单方法:
app.get('/new/*', function(req, res) {
// Grab params that are attached on the end of the /new/ route
var url = req.params[0];
这样你就不必担心任何正斜杠被误认为是路由或目录,它会抓取 /new/ 之后的所有内容。
我只想补充一点,如果您将 ?param=some_param
之类的其他参数传递给您的 "url paramter",它不会显示在 req.params[0]
中。
相反,您可以只使用 req.url
属性.
在我的 Express 应用程序中,我有一个路由器监听 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 错误。
我想在访问req.params.parameter
时得到http://www.udemy.com
。
你需要这样逃脱:
escape("http://www.google.com")
哪个returns:
"http%3A//www.google.com"
您需要在客户端使用 encodeURIComponent
,在 express 服务器中使用 decodeURIComponent
,这将对 url 参数中所有不允许的字符进行编码,例如 :
和 /
我不确定您是否仍在寻找解决此问题的方法。也许以防万一其他人试图弄清楚同样的事情,这是解决您的问题的简单方法:
app.get('/new/*', function(req, res) {
// Grab params that are attached on the end of the /new/ route
var url = req.params[0];
这样你就不必担心任何正斜杠被误认为是路由或目录,它会抓取 /new/ 之后的所有内容。
我只想补充一点,如果您将 ?param=some_param
之类的其他参数传递给您的 "url paramter",它不会显示在 req.params[0]
中。
相反,您可以只使用 req.url
属性.