gpt4 book ai didi

node.js - 快速请求后处理

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:57 25 4
gpt4 key购买 nike

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

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

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

最佳答案

如果您想将 token 添加到响应中,

1) 您可以创建一个中间件,在请求到来后、处理请求之前立即添加 token 。将其放在请求处理程序之前。

示例,

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

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

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

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

2) 如果您想在进程完成后(即响应准备好时)放置响应,那么您可能需要创建一个实用函数来发送回所有响应,并且您始终调用该函数。该实用程序函数将检查状态并附加 token 。

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

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

缺点:需要在任何地方调用函数,并且您不会在任何地方编写“res.send”。

优点:您有一个发送响应的网关,您可以在该函数中执行其他操作,例如编码、添加更多 header 等,并且所有这些响应修改操作都发生在一个地方。

关于node.js - 快速请求后处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29878063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com