首页 > 解决方案 > 什么时候在 express 应用程序中填充请求和响应对象

问题描述

我一直在编写后​​端 api,但我并不真正了解 express 如何使用我的代码进行竞价。我知道请求和响应对象提供什么,我只是不明白它们是如何形成的。

例如这个简化的代码:

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());

我知道该函数是根据路由请求调用的。不过,这对我来说非常抽象,我不明白何时、何地或如何与注入的 req\res 参数有关。

例如。我使用了一个 CMS,它通过添加一个用户属性来修改请求对象,然后在所有请求(无论是 ajax 还是其他方式)上都可以全局使用该属性,从而可以随时轻松地确定用户是否已登录。

req 和 res 对象是否只是由 express 预煮,但允许根据您的需要自由修改它们?他们什么时候真正“建成”

标签: node.jsexpress

解决方案


express 的核心实际上是使用节点的默认 http-module 并将 express-application 作为回调传递给http.createServer-function。请求和响应对象在此时填充,即从节点本身为每个传入连接填充。有关 node 的 http-module 和什么是 req/res 的更多详细信息,请参阅nodeJS 文档

您可能想查看express 的源代码,其中显示了 express 应用程序如何作为回调传递给http.createServer.

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


推荐阅读