从Express响应获取原始请求URL

用户5842

是否有一种优雅的方法可以从Expressresponse对象中检索原始请求URL

使用该request对象,我可以执行以下操作:

getFullUrl(req) {
    return url.format({
        host: environment.getHost(req),
        pathname: req.originalUrl,
        protocol: req.protocol
    });
}

我想知道我是否可以使用response看起来该href物业给了我我所需要的,但想得到更多的想法。

jfriend00

您可以访问res.reqrequest从该response对象获取该对象,从而可以使用与该request对象已经使用过的逻辑相同的逻辑

我在任何地方都找不到此文档,但是您可以console.log()在调试器或调试器中看到它-在那里。因此,请谨慎行事,因为可能无法保证它永远不会改变。

两者res.reqreq.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.jsExpress存储库中的文件,Expressres.req内部就可以使用各种各样的方法因此,如果他们将来要删除它,则必须更改许多自己的代码才能这样做。我想说它似乎比较安全。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章