【发布时间】:2022-01-15 07:10:33
【问题描述】:
我正在使用 Express Router,我正在尝试从 params URL 获取一些信息,但我无法使其正常工作,因为它总是返回 404。
这是我要调用的 URL
http://localhost:8080/api/v1/contr/method?param1=value1¶m2=param2
在我的快速路由器中,我有:
this.router.get("/contr/method", JWT.authenticateJWT, ContrController.method.bind(ContrController));
我总是得到
finalhandler default 404 +2m
如果我发送不带参数的请求,应用会按预期工作:
http://localhost:8080/api/v1/contr/method
【问题讨论】:
-
我不知道这是否会改变任何东西,但
this.router.get("contr/method", ...)应该是this.router.get("/contr/method", ...)并带有前导/。另外,请说明路由器本身是如何为/api/v1注册的。而且,您确定使用不带查询参数的 URL(例如http://localhost:8080/api/v1/contr/method)可以正常工作吗?而且,您确定您在该路线上使用的中间件没有查看查询参数并跳过它吗?因为,这里缺少太多代码,我们不知道问题出在哪里。 -
对不起,我添加了缺少的 / (在代码中没问题)。如果我使用输入参数进行调用,则应用程序按预期工作。我有其他路线,一切正常,除了这条带参数的路线。
-
我发现了问题,我目前正在努力解决它...问题是 param1 是一个 URL,所以这似乎使路由器感到困惑。我正在检查如何发送通过参数的 URL
-
作为查询参数嵌入在 URL 中的 URL 需要正确编码,以便它们看起来不是路径的一部分。见How to encode URL parameters。您可能希望在 URL 参数本身上使用
encodeURIComponent()。
标签: node.js express axios express-router