AWS API Gateway创建含2个路径参数的资源报错求助
解决AWS API Gateway多路径参数报错问题
报错原因
你碰到的错误是因为带+的贪婪路径变量(比如{userid+})只能作为路径的最后一段使用,无法和其他参数共存于同一段,也不能在它前面添加其他参数段。API Gateway的路径规则明确:贪婪变量会匹配该位置之后的所有内容,因此无法在其后方或同段内添加其他参数。
解决方案
方案1:拆分参数为独立路径段(推荐,符合REST规范)
将两个参数分别放在独立的路径层级中,比如设计路径为/users/{userid}/items/{itemid}。配置方式:
- 可分层创建资源:先建顶层资源
/users,再在其下创建子资源{userid},接着建/items子资源,最后创建{itemid}子资源 - 也可直接输入完整路径
/users/{userid}/items/{itemid},API Gateway会自动拆分层级
这种方式下,两个普通路径变量(不带+)能被API Gateway正确识别,后续可正常映射到Lambda函数的事件参数中。
方案2:同段参数自定义解析(不推荐)
如果特殊场景下必须将两个参数放在同一段,不要使用贪婪变量,改用普通变量拼接形式,比如/users/{userid-itemid},然后在Lambda函数中自行拆分userid-itemid的值(比如按-分割)提取两个参数。但这种方式可读性差,不符合RESTful设计原则,仅作为临时备选。
关键规则提醒
- 贪婪路径变量(
{var+})仅允许出现在路径最末尾,用于匹配多级子路径(比如/files/{filepath+}匹配/files/docs/report.pdf) - 普通路径变量(
{var})必须作为独立路径段,不能与其他字符或变量混合在同一段中
内容的提问来源于stack exchange,提问作者UmaiZ
相关产品推荐
相关产品推荐

