You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express访问/user路由返回URL异常问题咨询

问题1:访问/user时req.url显示为/的原因

你使用app.use('/user', ...)挂载中间件时,Express会自动将匹配到的挂载路径前缀(/user)从req.url中移除,仅保留相对于挂载点的路径部分。因此访问/user时,该中间件内的req.url会变成/。

如果需要获取完整的原始请求URL,可替换为req.originalUrl,修改代码如下:

app.use("/user", (req, res, next) => {
  res.send(`<h1>Route is : ${req.originalUrl}</h1>`);
});

若要精确匹配/user路径且保留req.url的原始值,建议改用app.get(对应HTTP GET方法)或其他HTTP方法路由,这类路由是精确路径匹配,不会修改req.url:

app.get("/user", (req, res, next) => {
  res.send(`<h1>Route is : ${req.url}</h1>`);
});

问题2:/user路由表现异常、/users被第二个中间件处理的原因

Express中app.use的字符串路径遵循路径段前缀匹配规则:/user只会匹配完全等于/user,或以/user/开头的路径(比如/user/profile)。

而/users与/user属于不同的路径段,不会被第一个app.use("/user")匹配,最终会被第二个app.use("/")(匹配所有路径)处理,此时req.url为完整的/users,所以返回结果如你所见。

你认为/user路由“无法正常工作”是误解——它实际是正常匹配的,只是req.url的表现符合Express挂载中间件的规则。

内容的提问来源于stack exchange,提问作者Naresh M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 06:44:51