AWS API Gateway(HTTP API)路径参数编码规则及正确编码方法咨询
AWS HTTP API路径参数编码规则及正确处理方式
AWS HTTP API对路径参数的处理分为两个核心阶段:
- 路由匹配阶段:API Gateway会先对整个请求URL的路径部分执行一次URL解码,再用解码后的路径匹配你定义的路由模板(比如
GET /{example}/thing)。 - 后端传递阶段:路由匹配成功后,API Gateway会将匹配到的路径参数值再次执行URL解码,再传递给后端集成(如Lambda)。
测试情况分析
- 请求
/a/b/thing:解码后路径为/a/b/thing,包含3个路径段(a、b、thing),与路由模板的2段结构不匹配,返回404,符合预期。 - 请求
/a%2Fb/thing:解码后路径变为/a/b/thing,同样是3个路径段,路由匹配失败,返回404。 - 请求
/a%25Fb/thing:解码后路径为/a%Fb/thing,%Fb属于无效URL编码字符,路由匹配失败,返回404。 - 请求
/a%2525Fb/thing:此处应为输入笔误,正确针对/的双重编码应为%252F。若请求路径为/a%252Fb/thing,解码后路径为/a%2Fb/thing(2个路径段),匹配路由模板;随后参数值a%2Fb会被再次解码为a/b传递给Lambda,这才是符合预期的结果。
正确的编码方式
要传递包含/的路径参数(如a/b),需对参数中的/进行双重URL编码:
- 第一步:将
/编码为标准URL编码%2F; - 第二步:将编码后的
%再次编码为%25,最终/会被转换为%252F。
因此a/b对应的编码后参数为a%252Fb,请求路径应为/a%252Fb/thing:
- API Gateway第一次解码后得到
/a%2Fb/thing,匹配路由; - 传递给Lambda时二次解码,得到参数值
a/b。
内容的提问来源于stack exchange,提问作者Paul Draper
相关产品推荐
相关产品推荐

