在快递中,我有一条不匹配的路线,我想知道为什么?
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 日志中。
当我发送时:
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 日志中。