在Express/Node.js中维护请求范围

7
我正在使用Express在我的Node.js应用程序中公开REST API。 当REST请求到达时,我从HTTP标头中提取用户信息。 我希望在此请求的整个生命周期内都可以使用此信息,无论我在执行什么函数。 一个明显但笨拙的方法是将用户信息作为参数传递给所有函数调用。 有更好的方法吗? 到目前为止,我发现了以下解决方案,但我不确定它们是否已准备就绪:
  1. StrongLoop Zone Library:文档说“区域库和文档仍在开发中:存在错误,缺少功能和有限的文档。”
  2. Continuation-Local Storage:不确定这是否被计划成为Node.js的一部分。 结尾的问题建议查看StrongLoop zone。
  3. Node.js Domains:看起来似乎并没有真正起飞。

所以你正在寻找“可请求的上下文”?这样,每当您需要未直接传递的上下文时,您都可以以某种方式请求它? - Amit
你可以直接将变量附加到 req 上。尝试添加以下代码:req.myObject = { color: "red" } - prototype
那么,在这种情况下,我将需要将 req 传递到应用程序的所有层中,这正是我试图避免的。 - Naresh
有解决方案了吗? - Cristian E.
1个回答

5

我不确定您是否仍在寻找相关内容,但我之前构建了express-http-context,用于此目的。它是一个基于cls-hooks(以前是continuation-local-storage)的express中间件。

完全透明:这是我构建和维护的npm软件包。


谢谢,Steve。我不再寻找这个解决方案,但我会记住 express-http-context。 - Naresh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接