快速请求后处理

我在express的文档里找不到任何东西,但是有请求后处理的东西吗? 我正在使用使用通行证的自定义令牌身份validationscheme,我希望能够在发出请求后自动更新响应头中的令牌,主要是用于身份validation目的的哈希时间戳。 为了便于讨论,让我们在每个请求之后执行以下函数:

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

理想情况下,我希望能够做到这一点,而不必在每个路线中调用next()。 这甚至可能吗?

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

1)您可以创build一个中间件,一旦请求到达,处理之前就立即添加令牌。 把这个请求处理程序之前。

例,

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

这里的小故障是,所有的回应都会带来令牌,但这可能是你可以接受的,因为它是一个时间戳。 另外,您甚至可以使用中间件处理错误,并在状态不是200时删除令牌。

优点:所需的最小更改,适当的error handling它很好。

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

2)如果你想在响应完成的时候(也就是响应准备好的时间)放置响应,那么你可能需要创build一个实用函数来发回所有的响应,而且你总是调用这个函数。 该效用函数将检查状态并追加令牌。

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

现在,只要你准备好发送回应,你可以调用这个函数。

缺点:function需要随处调用,你不会在任何地方写“res.send”。

优点:你有一个发送响应的网关,你可以做额外的东西,如编码,在该function添加更多的头等,所有这些响应修改的东西发生在一个地方。