Express应用程序在什么时候填充了请求和响应对象

时间:2019-05-31 17:57:09

标签: node.js express

我一直在编码后端api,但我并没有真正了解其出价对代码的表达方式。我知道请求和响应对象提供了什么,我只是不明白它们是如何实现的。

例如,以下简化代码:

exports.getBlurts = function() {
    return function(req, res) { 

    // build query…

    qry.exec(function(err, results) {
            res.json(results);
        }
    });
  } 
}

然后我要在一条路线中致电:

app.get('/getblurts/, middleware.requireUser, routes.api.blurtapi.getBlurts());

我知道该功能是在路由请求时调用的。不过,这对我来说是非常抽象的,我不知道何时,何地或与注入的需求参数有关。

例如。我使用的CMS通过添加用户属性来修改请求对象,该属性随后可在所有通过ajax或其他方式发出的请求中全局可用,从而始终可轻松确定用户是否已登录。

req和res对象是否只是通过express预煮的,但是可以根据需要修改它们的自由度?他们何时真正“建造”

1 个答案:

答案 0 :(得分:1)

快递实际上是使用节点的默认http模块并将快递应用程序作为回调传递给http.createServer函数。此时,即从节点本身为每个传入连接填充请求和响应对象。有关节点的http模块和要求/要求的更多详细信息,请参见the nodeJS documentation

您可能想签出express' source code,该文件显示了快速应用程序如何作为回调传递给http.createServer

https://github.com/expressjs/express/blob/master/lib/request.jshttps://github.com/expressjs/express/blob/master/lib/response.js显示了如何通过表达特定功能扩展节点的请求/响应。