是否有一种优雅的方法可以从Expressresponse
对象中检索原始请求URL ?
使用该request
对象,我可以执行以下操作:
getFullUrl(req) {
return url.format({
host: environment.getHost(req),
pathname: req.originalUrl,
protocol: req.protocol
});
}
我想知道我是否可以使用response
?看起来该href
物业给了我我所需要的,但想得到更多的想法。
您可以访问res.req
以request
从该response
对象获取该对象,从而可以使用与该request
对象已经使用过的逻辑相同的逻辑。
我在任何地方都找不到此文档,但是您可以console.log()
在调试器中或调试器中看到它-在那里。因此,请谨慎行事,因为可能无法保证它永远不会改变。
两者res.req
和req.res
似乎是Express对请求和响应对象的特定添加。您可以在Express的默认早期中间件处理程序的源代码中看到此处分配的它们:
/**
* Initialization middleware, exposing the
* request and response to each other, as well
* as defaulting the X-Powered-By header field.
*
* @param {Function} app
* @return {Function}
* @api private
*/
exports.init = function(app){
return function expressInit(req, res, next){
if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express');
req.res = res;
res.req = req;
req.next = next;
setPrototypeOf(req, app.request)
setPrototypeOf(res, app.response)
res.locals = res.locals || Object.create(null);
next();
};
};
尽管它们似乎没有记录在案,但Express的内部在所有地方都依赖它们。仅查看response.js
Express存储库中的文件,Expressres.req
内部就可以使用各种各样的方法。因此,如果他们将来要删除它,则必须更改许多自己的代码才能这样做。我想说它似乎比较安全。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句