You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从AWS AppSync请求中获取原始GraphQL查询

解决AWS AppSync传递客户端原始GraphQL查询至后端API的方案

核心可行方案:直接在请求映射模板中传递原始查询上下文变量

在AWS AppSync的HTTP数据源请求映射模板中,可直接通过内置上下文变量获取客户端发送的完整原始查询,无需手动重建。关键变量包括:

  • $context.request.query: 客户端发送的完整原始GraphQL查询字符串
  • $context.variables: 客户端随查询一起发送的变量集合
  • $context.request.operationName: 客户端指定的操作名称(如果有)

示例请求映射模板

将以下内容配置到HTTP数据源的请求映射模板中,即可把原始查询完整传递给后端GraphQL API:

{
  "version": "2018-05-29",
  "method": "POST",
  "resourcePath": "/graphql",
  "params": {
    "headers": {
      "Content-Type": "application/json"
    },
    "body": {
      "query": "$context.request.query",
      "variables": "$context.variables",
      "operationName": "$context.request.operationName"
    }
  }
}

关于context.info.selectionSetGraphQL的说明

context.info.selectionSetGraphQL的设计用途并非返回完整原始查询,它仅会返回当前解析器对应的字段选择集合(即针对特定字段的片段),这属于文档描述的正常行为,并非不符。

替代方案:Lambda中间层(若映射模板无法满足需求)

如果需要对原始查询做额外处理(如修改、校验),可在AppSync和后端API之间加入Lambda中间层:

  1. 配置AppSync将请求发送至Lambda函数
  2. 在Lambda中通过event.request.query获取原始查询
  3. 处理后再转发请求至后端GraphQL API

示例Lambda代码片段(Node.js):

exports.handler = async (event) => {
  // 获取原始查询和变量
  const originalQuery = event.request.query;
  const variables = event.variables;
  
  // 可选:添加自定义处理逻辑
  // ...
  
  // 转发至后端API
  const response = await fetch('https://your-backend-graphql-api.com/graphql', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      query: originalQuery,
      variables: variables,
      operationName: event.request.operationName
    })
  });
  
  return await response.json();
};

内容的提问来源于stack exchange,提问作者Mpu-Mypl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:35:29