在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;

本文详细介绍了Express 4.x中与请求路径相关的三个核心属性:req.baseUrl, req.originalUrl 和 req.path,并通过示例代码展示了它们的具体用途及区别。
945

被折叠的 条评论
为什么被折叠?



