[express]req

在Express4.x中的req关于路径的有以下几个属性:

1)req.baseUrl    2)req.originalUrl      3)req.path  

1) req.baseUrl: 

说白了就是你使用app.use('/root')或者router.use('/path1')时候的path的拼接(如path中有pattern,则是匹配后的)。

假设请求url: http://localhost:3000/test1/test2/main?name=joy

app.js

var express = require('express');
var app = express();
app.use('/test1', test);

test.js

const router = require('express').Router();
const test2 = require('./test2');

router.use('/te*t2', test2);
router.get('/', (req, res, next) => {
    console.log(req.baseUrl);// -> /test1 在app.js中用了 app.use('/test1', test)
});

module.exports = router;

test2.js

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

router.get('/main', (req, res, next) => {
    console.log(req.baseUrl);// -> /test1/test2 在app.js中用了 app.use('/test1', test); test.js中用了router.use('/te*t2', test2);
});
module.exports = router;

2) req.originalUrl:原始的请求url

就是原始的请求路径: 这里是http://localhost:3000/test1/test2?name=joy

3) req.path:当前req的请求路径

实际上是req.route.path,是动态计算的,根据上面test.2的实现是req.path = '/main'.

那如果test2.js代码改成

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

router.get('/', (req, res, next) => {
    console.log(req.path);//则 是 / 。如请求url是http://localhost:3000/test1/test2?name=joy
});

module.exports = router;



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页