【发布时间】:2017-08-17 21:23:29
【问题描述】:
在我的 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。
【问题讨论】:
-
您必须将 url 作为正文或至少在查询参数中传递,而不是附加到原始 url 本身。你得到的错误是因为浏览器会过滤掉它
-
您必须对您附加的 URL 进行编码,因为除了协议之外的任何地方都不允许使用像
:这样的字符,因此不能在 URL 的路径中使用。 -
@binariedMe - 这不是真的。如果编码正确,它可以在路径中。
-
同意。我个人不喜欢编码,因为您需要在服务器端重新创建 url。而是将其作为查询参数或在正文中传递很容易
-
那些不是合法的 URI。
:字符出现在除第一个协议之外的任何位置时都必须进行编码。请参阅第 2.2 节。 RFC.
标签: javascript node.js express routing url-parameters