我可以在我的 graphql 查询中访问请求标头,在 nestjs 中吗?

     2023-03-08     40

关键词:

【中文标题】我可以在我的 graphql 查询中访问请求标头,在 nestjs 中吗?【英文标题】:Can I access request headers in my graphql query, in nestjs? 【发布时间】:2020-06-23 05:42:54 【问题描述】:

我正在尝试在 graphql 的查询中访问用户的 IP 地址。但我无法获得任何标题信息。如何在我的 graphql 请求中访问我在工厂中创建的上下文?

// app.module.ts
...

@Module(
  imports: [
    ConfigModule,
    GraphQLModule.forRootAsync(
      imports: [ 
        LanguageModule,
        SearchModule],
      inject: [ConfigService],
      useFactory: () => (
        autoSchemaFile: 'schema.gql',
        debug: true,
        fieldResolverEnhancers: ['guards'],
        formatError: (error: GraphQLError): GraphQLFormattedError => 
          return error.originalError instanceof BaseException
            ? error.originalError.serialize()
            : error;
        ,
        context: ( req ): object => 
          console.log("req.ip: ", req.ip); // Here I have the ip
          return  req ;
        ,
      ),
    ), 
  ],
  controllers: [AppController],
  providers: [AppService],
)
export class AppModule 

// search.resolver.ts
...

@Resolver(() => Search)
export class SearchResolver 
  constructor(private readonly service: service) 

  @Query(() => Search)
  async search(@Args() args: SearchArgs): Promise<Search> 

    // I want the ip here, I want to send it as an argument into the query function below
    const response = await this.service.query(args.query, 
      language: args.language,
    );
    return response;
  

【问题讨论】:

【参考方案1】:

根据这个thread解析器context参数应该包含req,但这取决于[取决于配置]。

解析器通常采用 (parent, args, context, info) 参数 - 检查您的上下文中是否定义了上下文。

【讨论】:

谢谢!我可以像你说的那样使用 context 参数访问它。像这样:'''@Query(() => Search) async search(@Args() args: SearchArgs, @Context() context): Promise console.log(context); ... '''

如何将请求标头传递给 graphql 解析器

】如何将请求标头传递给graphql解析器【英文标题】:Howtopassrequestheadersthroughtographqlresolvers【发布时间】:2018-09-2109:29:26【问题描述】:我有一个由JWT授权的graphql端点。我的JWT策略验证JWT,然后将用户对象添加到请求对象。在一... 查看详情

在我想使用的 GraphQL Playground 中设置测试标头会导致“无法访问服务器”

】在我想使用的GraphQLPlayground中设置测试标头会导致“无法访问服务器”【英文标题】:SettingatestheaderinGraphQLPlaygroundthatIwanttousecauses"Servercannotbereached"【发布时间】:2019-05-2111:58:53【问题描述】:所以我创建了一堆突变和... 查看详情

如何监控 http 请求以便在我的 ios 应用程序中查看我的标头请求,内置反应本机

】如何监控http请求以便在我的ios应用程序中查看我的标头请求,内置反应本机【英文标题】:Howtomonitorhttprequestsinordertoseemyheaderrequestinmyiosappbuiltinreactnative【发布时间】:2017-01-1320:03:25【问题描述】:我正在使用ReactNative开发一... 查看详情

Apollo GraphQL - 是不是可以执行请求不同字段的相同查询?

】ApolloGraphQL-是不是可以执行请求不同字段的相同查询?【英文标题】:ApolloGraphQL-Isitpossibletodothesamequeryrequestingdifferentfields?ApolloGraphQL-是否可以执行请求不同字段的相同查询?【发布时间】:2019-07-3016:47:51【问题描述】:我正在... 查看详情

我可以在不使用 prisma 的情况下在我的 graphQL 服务器中使用 MongoDB 吗?

】我可以在不使用prisma的情况下在我的graphQL服务器中使用MongoDB吗?【英文标题】:CaniuseMongoDBinmygraphQLserverwithouttheuseofprisma?【发布时间】:2019-03-3101:26:29【问题描述】:我想在没有棱镜的情况下直接使用mongodb查询。可能吗?如... 查看详情

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

】通用服务,了解我是在GRAPHQL上下文还是HTTP上下文中?【英文标题】:Genericservice,understandingifIaminGRAPHQLcontextorHTTPcontext?【发布时间】:2019-09-1800:48:44【问题描述】:我可以注入任何东西来了解我所处的上下文,即我的服务是从g... 查看详情

是否可以从 Relay 突变访问 GraphQL 验证错误?

】是否可以从Relay突变访问GraphQL验证错误?【英文标题】:IsitpossibletoaccessingGraphQLvalidationerrorsfromaRelaymutation?【发布时间】:2020-10-1512:28:15【问题描述】:我对GraphQL有点陌生,所以,我仍然在脑海中将所有活动部分拼凑在一起。... 查看详情

从自定义标头中检索访问令牌

...ustomisedheader【发布时间】:2016-08-2707:11:50【问题描述】:在我的WebAPI中,我想从请求中的Cookies标头中获取访问令牌,然后对令牌进行验证。目前,IdentityServer3.AccessTokenValidation包用于验证Bearer令牌,它仅从Authorization标头中查找令... 查看详情

如何在所有 GraphQL 请求的标头中注入 Id。例如,在所有 GraphQL 请求的标头中,它应该像:- Id:1234

】如何在所有GraphQL请求的标头中注入Id。例如,在所有GraphQL请求的标头中,它应该像:-Id:1234【英文标题】:howtoinjectanIdintheheaderforallGraphQLrequest.Forexample,InheaderforallGraphQLrequestitshouldcomelike:-Id:1234【发布时间】:2018-07-0706:32:04【问... 查看详情

更新nestjs/graphql后没有通过标头

】更新nestjs/graphql后没有通过标头【英文标题】:Headerarenotpassedthroughafterupdatingnestjs/graphql【发布时间】:2019-02-0702:59:50【问题描述】:我即将将我的项目依赖项更新到下一个主要版本,但我无法让nestjs/graphql+nestjs/passport工作。看... 查看详情

无法在 React 中使用 GraphQL 查询 - 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头

】无法在React中使用GraphQL查询-已被CORS策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头【英文标题】:CannotuseGraphQLqueriesinReact-hasbeenblockedbyCORSpolicy:No\'Access-Control-Allow-Origin\'headerispresentontherequestedresource【发布时间】... 查看详情

在 GatsbyJS/GraphQL 中组合页面查询

】在GatsbyJS/GraphQL中组合页面查询【英文标题】:combiningpagequeriesinGatsbyJS/GraphQL【发布时间】:2020-09-0720:35:12【问题描述】:如何在GraphQL中合并两个页面查询?我尝试简单地将我需要的数据组合到一个查询中,但它一直给我一个... 查看详情

我可以通过 graphQL 查询多次查询 GraphQL 单一响应吗?

】我可以通过graphQL查询多次查询GraphQL单一响应吗?【英文标题】:CaniqueryGraphQLsingleresponcemultipletimesbygraphQLquery?【发布时间】:2020-05-2100:32:33【问题描述】:我正在使用GraphQLReact-Apollo创建一个BFF应用程序,这是我想要的1)在一个... 查看详情

如何从 graphQL apollo 突变或查询上的 cookie 更新授权标头

】如何从graphQLapollo突变或查询上的cookie更新授权标头【英文标题】:HowwouldIupdatetheauthorizationheaderfromacookieonagraphQLapollomutationorquery【发布时间】:2021-06-0413:21:43【问题描述】:我的NextJS应用程序有以下_app.js。我想通过将设置的coo... 查看详情

AWSAppSyncClient 未检测到 graphql 查询

】AWSAppSyncClient未检测到graphql查询【英文标题】:AWSAppSyncClientdoesnotdetectgraphqlqueries【发布时间】:2019-05-3020:55:11【问题描述】:我在我的Android应用程序中使用AWSAppSync并关注this链接,但我已经在我的AppSync中创建了API,我希望将... 查看详情

如何在 GraphQL Relay 中捕获查询的响应

】如何在GraphQLRelay中捕获查询的响应【英文标题】:HowtocapturetheresponseofaqueryinGraphQLRelay【发布时间】:2021-01-1120:48:06【问题描述】:我是新来的中继,我有一个提供响应的查询,我可以在检查器的网络选项卡中看到,但我不明白... 查看详情

使用 neo4j-graphql-js 时如何访问自定义 graphQL 解析器中的请求标头?

】使用neo4j-graphql-js时如何访问自定义graphQL解析器中的请求标头?【英文标题】:HowtoaccessrequestheadersincustomgraphQLresolverswhenusingneo4j-graphql-js?【发布时间】:2020-10-0117:48:09【问题描述】:尝试时:constserver=newApolloServer(schema:schema,cont... 查看详情

使用 axios 请求 graphql 查询

】使用axios请求graphql查询【英文标题】:Requestagraphqlquerywithaxios【发布时间】:2021-07-0922:30:03【问题描述】:我正在尝试使用axios通过graphql查询发出请求,但失败了。这是我的查询queryworkspace(workspaceName:"***")namecompanyname还有我的... 查看详情