【发布时间】:2021-05-16 20:50:28
【问题描述】:
假设我们有一个 GraphQL NestJS 应用程序,它充当客户端和 REST API 服务器之间的代理。它有 3 层:
- 解析器
- 服务(有点业务逻辑和东西)
- 扩展
HTTPService并增加了功能
我们希望将动态标头添加到 NestJS 向 REST API 服务器发出的请求,该服务器使用 axios。标头基于:
- 用户:我们可以借助解析器中的
User装饰器读取用户并将其传递给服务,或者据我所知从 GraphQL 上下文中读取。 - 路由:不同的端点可能需要不同的标头。我认为我们可以指定由于服务中的特定路由而应添加的标头类型,但这看起来不那么可扩展...。或者我们可以存储一个当前路径的对象,我们向它发出请求。拦截传出请求并使用 RegExp 来确定请求被发送到哪个路径(即
user/3将转换为user/:id,我们可以添加适当的标头知道这一点)。
[
{
path: 'user/:id',
...
},
{
path: 'user/:id/image',
...
}
]
所以我的问题是我们如何根据路径(axios 请求的 URL)和当前用户将来自 NestJS 应用程序的传出请求的标头添加到某些端点。在拦截传出请求时将 url 与一些 RegExps 匹配是否昂贵?
【问题讨论】: