快速路由在接收参数时给出 404
Express routing giving 404 when receving params
我正在使用 Express Router,我正在尝试从参数 URL 获取一些信息,但我无法让它工作,因为它总是返回 404。
这是URL我想打电话给
http://localhost:8080/api/v1/contr/method?param1=value1¶m2=param2
在我的 express 路由器中我有:
this.router.get("/contr/method", JWT.authenticateJWT, ContrController.method.bind(ContrController));
而且我总是得到
finalhandler default 404 +2m
如果我不带参数发送请求,应用程序将按预期运行:
http://localhost:8080/api/v1/contr/method
如果您正在构建一个 URL 并将 URL 本身作为参数,那么您需要在嵌入式 URL 上调用 encodeURIComponent()
:
let url = "http://localhost:8080/api/v1/contr/method?url=" + encodeURIComponent(otherUrl);
这种编码参数的方式不会在 URL 解析期间与 URL 的路径混淆。有关详细信息,请参阅 encodeURIComponent()
上的 doc。
您需要对任何包含 URL 解析时特殊字符的参数使用 encodeURIComponent()
。然后它们将以十六进制编码,例如 %2F
这将导致它们不匹配任何 URL 解析。而且,Express 中的 URL 解析已经自动为您解码。
我正在使用 Express Router,我正在尝试从参数 URL 获取一些信息,但我无法让它工作,因为它总是返回 404。
这是URL我想打电话给
http://localhost:8080/api/v1/contr/method?param1=value1¶m2=param2
在我的 express 路由器中我有:
this.router.get("/contr/method", JWT.authenticateJWT, ContrController.method.bind(ContrController));
而且我总是得到
finalhandler default 404 +2m
如果我不带参数发送请求,应用程序将按预期运行:
http://localhost:8080/api/v1/contr/method
如果您正在构建一个 URL 并将 URL 本身作为参数,那么您需要在嵌入式 URL 上调用 encodeURIComponent()
:
let url = "http://localhost:8080/api/v1/contr/method?url=" + encodeURIComponent(otherUrl);
这种编码参数的方式不会在 URL 解析期间与 URL 的路径混淆。有关详细信息,请参阅 encodeURIComponent()
上的 doc。
您需要对任何包含 URL 解析时特殊字符的参数使用 encodeURIComponent()
。然后它们将以十六进制编码,例如 %2F
这将导致它们不匹配任何 URL 解析。而且,Express 中的 URL 解析已经自动为您解码。