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

时间:2015-04-28 20:19:20

标签: express routes

当我发送:

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

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

路线是

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

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

1 个答案:

答案 0 :(得分:1)

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发送。这更“规范”,另一个优点是您没有将潜在的敏感信息保存在浏览器历史记录和HTTP日志中。