在快递中,我有一条不匹配的路线,我想知道为什么?

In express I have a route that doesn't match and I want to know why?

当我发送时:

PATCH /55148df6935c4bac084b30b2/token/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NTE0OGRmNjkzNWM0YmFjMDg0YjMwYjIiLCJpYXQiOjE0MzAyNTE2OTg5NDIsImV4cCI6MTQzMDI1MTkzODk0Mn0.n8Itqpaf7hjyq23ke977S0oamqXSwEF9iFR62Mlo9Sw

我总是返回 404?为什么?我错过了什么?

路线是

router.patch('/:id/token/(.+)/', ...)

显然我遗漏了一些假设。字符串太长了吗?是个 '。'在导致问题的字符串中?你能帮忙吗?

Express 不接受像这样的路径中的原始正则表达式模式。您需要将它们附加到命名的路由参数。您可以像这样指定一个正则表达式::token([\w\.]+),但默认的 :token 应该已经匹配您的测试字符串。例如,这可能是您要查找的内容:

router.patch('/:id/token/:token', function(req, res) {
    console.log('My ID:', req.params.id);
    console.log('My token:', req.params.token);
})

但我还建议在请求正文中发送 PATCH 数据,而不是在请求路径中。您可以将它们作为 url 编码形式参数(例如 token=1234abcd)或例如 JSON 发送。这更 "canonical",另一个优点是您不会将潜在的敏感信息保存在浏览器历史记录和 HTTP 日志中。