如何通过 Express 中的中间件链识别请求(通过 ID)。

2023-11-25

我正在使用 Node.js 开发一个 RESTful 服务器,使用 Express 作为框架,暂时使用 Winston 作为记录器模块。 该服务器将处理大量并发请求,并且能够使用“请求 ID”之类的内容跟踪每个特定请求的日志条目对我来说非常有用。直接的解决方案是每次我想要创建日志条目时,将此 ID 添加为另一条日志记录信息,但这意味着将“请求 ID”传递给服务器使用的每个方法。

我想知道是否有任何 node.js/javascript 模块或技术可以让我以更简单的方式完成此操作,而无需携带每个特定请求的请求 ID。


如果你自动递增,你以后的日志分析将无法唯一标识请求,因为不同的实例会产生冲突的ID,并且重新启动应用程序会自动导致ID冲突。

这是另一种可能的解决方案。

安装cuid:

npm install --save cuid

然后在你的主应用程序文件中:

var cuid = require('cuid');
var requestId = function requestId(req, res, next) {
  req.requestId = cuid();
  next();
};

// Then, at the top of your middleware:
app.use(requestId);

现在,您将获得一个不太可能发生冲突的友好请求 ID,并且您将能够唯一地标识您的日志分析和调试请求,甚至跨多个实例和服务器重新启动也是如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 Express 中的中间件链识别请求(通过 ID)。 的相关文章

随机推荐