当我发送:
PATCH /55148df6935c4bac084b30b2/token/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NTE0OGRmNjkzNWM0YmFjMDg0YjMwYjIiLCJpYXQiOjE0MzAyNTE2OTg5NDIsImV4cCI6MTQzMDI1MTkzODk0Mn0.n8Itqpaf7hjyq23ke977S0oamqXSwEF9iFR62Mlo9Sw
我总是回来404?为什么?我错过了什么?
路线是
router.patch('/:id/token/(.+)/', ...)
显然我错过了一些假设。字符串太长了吗?是'。'在字符串中导致问题?你能帮忙吗?
答案 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日志中。