Expressjs 中的 req.url 和 req.originalUrl 有什么不同

298 阅读1分钟

express 会改写 req.url, 比如下面这段代码

const express = require('express');
const app = express();

app.use('/api', (req, res) => {
  console.log(req.url); // 输出: /users
  console.log(req.originalUrl); // 输出: /api/users
  res.json({})
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

当 http 请求中的 url 是 /api/users 时,nodejs 原生 http module 中的 req.url 是 /api/user, 不过 express 会将 req.url 改写为 /users, 同时 express 增加了一个 req.originalUrl 保留最初的 nodejs 原生 http module 中的 req.url. 所以 req.url/users, req.originalUrl/api/users