繁体   English   中英

我如何在没有express的情况下获取节点graphql解析器的标头?

[英]How can I get header for node graphql resolver without express?

我知道在快递中,我们可以有request.header,但是没有快递,我怎么能得到标题?

我正在使用Apollo解析器,正在尝试在我的graphql解析器中使用标头。

  async item (_, args, context) {
    if (ApiVersion === '2') {
      return await itemv2(args);
    }
    return await itemv1(args);
  },

docs所示,传递给ApolloServer的构造函数的context参数可以是对象或函数。 如果是函数,则应返回上下文对象或将解析为一个的Promise。 该函数将带有req属性的对象作为其第一个参数传递给它。 这是一个明确的请求对象,因为这是Apollo Server在后台使用的对象。 您可以访问此对象通常可用的任何属性,包括标题:

new ApolloServer({
  typeDefs,
  resolvers,
  context: ({ req }) => {
    console.log(req.headers.authorization)

    return req
  },
})

因此,如果将整个req对象用作上下文,则可以执行以下操作:

  async item (_, args, context) {
    if (context.headers['api-version'] === '2') {
      return await itemv2(args);
    }
    return await itemv1(args);
  },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM