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

如何移除AWS API Gateway响应的JSON Schema并转换DynamoDB返回格式?

使用API Gateway集成响应处理DynamoDB代理的响应格式与Schema移除

核心结论

完全可以通过API Gateway的集成请求/响应配置搞定这两个需求——既把DynamoDB原生带类型标识的JSON转成扁平化格式,又移除响应里的JSON Schema。下面是具体操作步骤:


一、转换DynamoDB响应为扁平化格式

DynamoDB返回的是带类型标记(比如S代表字符串、N代表数字)的AttributeValue格式,我们需要用集成请求的映射模板来做转换:

  1. 打开API Gateway控制台,找到代理DynamoDB的目标API方法(比如GET方法),切换到「集成请求」标签
  2. 滚动到「映射模板」区域,选择请求内容类型为application/json(如果没有这个选项,点击「添加映射模板」新增)
  3. 替换默认模板代码为以下VTL(Velocity Template Language)脚本,它会自动处理字符串、数字类型的扁平化,遍历所有Items完成转换:
    #set($inputRoot = $input.path('$'))
    {
      "Count": $inputRoot.Count,
      "Items": [
        #foreach($item in $inputRoot.Items)
        {
          #foreach($key in $item.keySet())
            #set($value = $item.get($key))
            "$key": 
            #if($value.S)
              "$value.S"#{if($foreach.hasNext)},#{end}
            #elseif($value.N)
              $value.N#{if($foreach.hasNext)},#{end}
            #else
              #* 可根据需求扩展其他类型:BOOL/列表L/映射M等 *#
              null#{if($foreach.hasNext)},#{end}
            #end
          #end
        }#{if($foreach.hasNext)},#{end}
        #end
      ]
    }
    
  4. 保存模板,这样DynamoDB的原生响应就会被转换成你想要的简洁格式

二、移除响应中的JSON Schema

这个操作需要在「集成响应」里配置:

  1. 切换到对应方法的「集成响应」标签
  2. 找到要修改的状态码(比如默认的200 OK),展开它的设置项
  3. 在「响应模型」下拉菜单中选择Empty(如果没有这个选项,可以先去API Gateway的「模型」页面创建一个空模型,或者直接选择不绑定任何模型)
  4. 确认「响应头」里没有强制返回Schema的配置,这样API Gateway就不会在响应中附加JSON Schema了

测试验证

完成上述配置后,回到API Gateway的测试控制台重新发送请求,就能看到符合要求的响应:扁平化的Items结构,没有多余的类型标记,也没有JSON Schema。如果你的数据还有其他类型(比如布尔值、列表),可以在VTL模板里添加对应的判断分支来适配。

内容的提问来源于stack exchange,提问作者Balaji Kartheeswaran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:12:27