通用服务,了解我是在GRAPHQL上下文中还是在HTTP上下文中?

时间:2019-04-29 11:41:10

标签: javascript node.js typescript graphql nestjs

我可以注入什么来了解我所处的上下文,即我的服务是从graphql请求或http请求中调用的。

我有一个请求范围服务,需要返回一个标头。标头存储在REQUEST对象上,如果它是HTTP上下文,或者可以在graphql上下文上使用(如我之前设置的),则可以自动注入该对象-因此

return this.request.headers["test"]

OR

return this.context.request.headers["test"]

但是我需要了解我在哪个上下文中返回正确的对象

有什么想法吗?

预先感谢

1 个答案:

答案 0 :(得分:1)

您可以只创建一个辅助函数来获取标头:

getHeader(key: string) {
  if (this.request && this.request.headers && this.request.headers[key]) {
    return this.request.headers[key];
  } else if (this.context.request && this.context.request.headers && this.context.request.headers[key]) {
    return this.context.request.headers[key];
  } else {
    throw new BadRequestException(`Required header ${key} is missing`);
  }
}