快速请求 Post-Processing

Express Request Post-Processing

我没能在 express 的文档中找到任何内容,但是是否有请求 post 处理之类的东西?我正在使用使用护照的自定义令牌身份验证方案,我希望能够在发出请求后自动更新响应 header 中的令牌,主要是用于身份验证目的的散列时间戳。出于讨论目的,假设我希望在每次请求后执行以下函数:

function requestPostProcess(req, res){
    if (res.status == 200)
    {
        res.token = updateToken();
    }
}

理想情况下,我希望无需在每条路线中调用 next() 即可执行此操作。这可能吗?

如果要将令牌添加到响应中,

1) 您可以创建一个中间件,在请求到来时立即添加令牌,然后再处理。把它放在请求处理程序之前。

示例,

app.use(function(req, res, next){
  res.token = updateToken();
  next();
})

这里的问题是,令牌将随所有响应一起提供,但您可以接受它,因为它是一个时间戳。此外,您甚至可以使用中间件处理错误,并在状态不是 200 时删除令牌。

优点:所需更改最少,通过适当的错误处理效果很好。

缺点:它告诉的是收到请求的时间,而不是响应准备好的时间。

2) 如果你想在流程完成后放置响应,意思是响应准备好的时间,那么你可能需要创建一个实用函数来发回所有响应,并且你总是调用它功能。该实用程序函数将检查状态并附加令牌。

function sendResponseGateway(req, res){
    if (res.status == 200)
    {
        res.token = updateToken();
    }
    res.send()
}

现在只要您准备发送响应,就可以调用此函数。

缺点:函数需要到处调用,你不会在任何地方写"res.send"。

优点:你有一个发送响应的网关,你可以在那个函数中做额外的事情,比如编码,添加更多的头等,所有这些响应修改都发生在一个地方。