哪个 JavaScript 库在请求对象上设置 _parsedUrl 属性

What javascript library sets the _parsedUrl property on a request object

本文关键字:设置 parsedUrl 属性 对象 JavaScript 请求 哪个      更新时间:2023-09-26

我正在使用node/express/passport/查看尝试使用请求的代码,例如: req._parsedUrl.pathname;

我无法弄清楚这个变量来自哪里。这是在公共.js库中设置的规范变量名称吗?它似乎没有在任何标题中公开。

req._parsedUrl由 Express' Router 在处理传入请求时使用的parseurl库创建。

Router实际上并不打算创建req._parsedUrl。相反parseurl创建变量作为通过缓存进行优化的一种形式。

如果要使用req._parsedUrl.pathname请执行以下操作,以确保服务器在丢失req._parsedUrl时不会崩溃:

var parseUrl = require('parseurl');
function yourMiddleware(req, res, next) {
    var pathname = parseUrl(req).pathname;
    // Do your thing with pathname
}

如果parseurl已经存在,将返回req._parsedUrl,或者如果不存在,它将首次执行解析。现在,您以保存方式获取pathname,同时仍然不会多次解析 url。

您可以编写一个中间件来处理,然后设置 req 的属性。

var myMiddleWare = function () {
   return function (req, res, next) {
       req._parsedUrl = 'SOME_THING';
       next()
   }
};
app.get('/', myMiddleWare, function (req, res) {
   console.log(req._parsedUrl); // SOME_THING
   res.end();
})

在此处快速提供中间件文档