小编Geo*_*ord的帖子

Express 中间件中对 request.url 的更改是否会持续到下一个中​​间件?

我有一个重写 request.url 的中间件。但是在 next() 中间件中, request.url 仍然是原始未修改的 url。

例子:

var express = require('express');
var router = express.Router();

router.use(function(req, res, next) {
  console.log('Before Rewrite',req.url);
  if(/^\/v[1-9]/.test(req.originalUrl) ) {
    console.log('Rewritten');
    req.url = '/api' + req.originalUrl;
  }
  console.log('After Rewrite',req.url);
  next();
});
router.use('/api', function(req, res, next) {
  console.log('Next', req.url);
  next();
});
Run Code Online (Sandbox Code Playgroud)

使用 '/v3/foo' 的示例 url,以下内容将输出到控制台:

Before Rewrite /v3/foo
Rewritten
After Rewrite /api/v3/foo
Next /v3/foo
Run Code Online (Sandbox Code Playgroud)

关于为什么请求更改不会持续到下一个中​​间件的任何想法?

javascript node.js express

5
推荐指数
1
解决办法
3419
查看次数

标签 统计

express ×1

javascript ×1

node.js ×1