AWS API Gateway代理模式下未传递请求路径参数的问题排查
修复AWS API Gateway代理路径丢失问题
问题原因
你当前的API Gateway配置未正确传递resource01之后的子路径到后端服务,导致后端请求缺少api/serviceName部分,最终返回404。
具体修正步骤
调整资源为代理类型
- 进入API Gateway控制台,找到目标API下的
/resource01资源。 - 若当前是普通资源,删除后重新创建:路径设置为
/resource01/{proxy+}({proxy+}是核心配置,用于匹配该资源下的所有多级子路径)。 - 若不想删除原有资源,可在
/resource01下创建子资源,路径设置为/{proxy+}。
- 进入API Gateway控制台,找到目标API下的
修改集成请求URI
- 进入
/resource01/{proxy+}(或子资源/{proxy+})的ANY方法配置页面,切换到集成请求标签。 - 将后端端点URI从固定的
https://api.companySite.com/service01/v1修改为https://api.companySite.com/service01/v1/{proxy}。这里的{proxy}会自动替换为请求中resource01之后的所有路径内容(比如api/serviceName)。
- 进入
检查映射模板(可选)
- 如果配置了自定义映射模板,确保模板未覆盖路径参数的传递。对于ANY方法,保持默认的
$input.path('$')即可,无需额外修改。
- 如果配置了自定义映射模板,确保模板未覆盖路径参数的传递。对于ANY方法,保持默认的
重新部署API
- 完成上述修改后,点击API Gateway控制台顶部的部署API按钮,选择对应的部署阶段(如prod),确认部署。
验证
部署完成后,再次用Postman请求https://api.mydomain.com/resource01/api/serviceName?value=12345,查看CloudWatch日志,此时后端请求URI应变为https://api.companySite.com/service01/v1/api/serviceName?value=12345,服务会返回正常的200响应。
常见注意事项
- 必须使用
{proxy+}而非{proxy}:前者匹配多级子路径(如api/serviceName),后者仅匹配单一级路径。 - 集成URI必须包含
/{proxy}:若缺失,API Gateway只会传递查询参数,不会追加子路径。
内容的提问来源于stack exchange,提问作者Narm
相关产品推荐
相关产品推荐

