快速路由在接收参数时给出 404

Express routing giving 404 when receving params

我正在使用 Express Router,我正在尝试从参数 URL 获取一些信息,但我无法让它工作,因为它总是返回 404。

这是URL我想打电话给

http://localhost:8080/api/v1/contr/method?param1=value1&param2=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 解析已经自动为您解码。