NodeJS 将值从请求直接传递到express中的api调用

ht4b089n  于 2022-11-29  发布在  Node.js
关注(0)|答案(2)|浏览(210)

我有一个不是我写的express应用程序,简单的应用程序获取参数,调用一个cms api,然后用handlebar动态构建一个页面,并在响应中发送。
在请求中,我在cookie中获得了一个JWT标记,现在我需要将它传递给每个API调用。
然而,逻辑是相当广泛的,在app.get()和最终函数getFromBackend之间有很多函数被调用,getFromBackend进行api调用并需要jwt令牌。在async handlebar helper等中也有很多它的实现。
所以我想知道我是否必须通过app.getgetFromBackend之间调用的所有函数以及进行api调用的helper中传递值,或者是否有一种模式允许我直接在函数内部使用请求cookie的值,或者可能插入api调用并将值传递给调用。
特别要注意的是,所有针对req的api调用都将始终具有相同的jwt令牌。每个req都有几个api调用,但它们都实现了getFromBackend函数。

ffx8fchx

ffx8fchx1#

如果不看实际的代码,很难知道你的选择是什么。如果你展示了真实的的代码,人们可以为你提供更具体的帮助。
如果没有特定代码,您可以使用的常规选项有:
1.将解析后的令牌作为一个属性放在某个对象上,该对象一直传递到链的末尾(例如Express response对象)。链的末尾通常必须发送一个响应,因此无论如何它都必须访问该响应对象。
1.将解析后的标记放在一个作用域更高的变量中(在请求处理程序作用域中),该变量在大多数情况下都可以从该作用域访问,然后在调用无法从该作用域访问它的对象时,在最后传递它。
1.将令牌本身一直传递到最后。
1.转换为面向对象的设计,以便处理此请求所涉及的大多数或所有函数都是对象上的方法,并且您可以使解析的令牌成为所有方法都挂起的对象上的示例变量。然后,这些方法中的每一个都可以通过this.token或类似的方式访问令牌。

mqkwyuun

mqkwyuun2#

如果cms api调用是在同一个requestresponse周期中进行的,那么最好将其附加到响应对象,并将其用于cms api调用。
如果不是直接转发,或者如果CMS调用处于某个其它requestresponse周期中,则可以使用Redis或任何存储器内DB来存储JWT令牌,并为CMSAPI调用检索它。

相关问题