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

如何阻止API Gateway/Lambda重写请求参数?

解决API Gateway/Lambda合并重复Query参数的问题

这种把多值Query参数合并成逗号分隔字符串的行为是API Gateway的默认操作,要阻止它分两种场景处理:

API Gateway端配置

1. REST API 操作步骤

  • 打开API Gateway控制台,找到你的目标API和对应的资源(比如/foo)
  • 选中该资源绑定的方法(GET/POST等),进入集成请求页面
  • 在URL查询字符串参数区域,手动添加参数a,同时勾选将查询字符串参数转发到集成
  • 做完这步,API Gateway就会保留原始的多值参数格式,不会再把a=1&a=2&a=3合并成a=1,2,3

2. HTTP API 检查点

HTTP API默认是保留多值Query参数的,如果还是出现合并情况,检查路由配置:

  • 进入HTTP API的路由设置页,找到对应路由
  • 确认路由的查询字符串参数配置里没有开启自动合并的选项(通常默认不开启,要是有自定义配置就调回来)

Lambda函数端处理

如果API Gateway已经正确转发了多值参数,但Lambda里还是拿到合并后的字符串,别用queryStringParameters,直接读multiValueQueryStringParameters字段:

# Python示例
def lambda_handler(event, context):
    # 获取参数a的所有值,返回列表格式
    a_values = event.get('multiValueQueryStringParameters', {}).get('a', [])
    # 这里写你的业务逻辑
    return {
        'statusCode': 200,
        'body': str(a_values)
    }
  • 划重点:queryStringParameters会自动合并多值参数成逗号串,multiValueQueryStringParameters才会以列表形式返回所有参数值

额外提醒

  • 要是用了API Gateway的映射模板,别用$input.params('a')(只返回第一个值),改用$input.params().get('a')或者$input.params('a[]')来获取所有值的列表
  • 别在集成请求里加自定义URL重写规则,容易不小心把参数合并了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:30:50