如何在CDK + APIGateway + Lambda架构中正确获取路径参数
解决方法
无需额外配置映射模板,API网关的Lambda集成默认会自动将路径参数映射到event.pathParameters对象中,你遇到的问题来自两处错误:
- CDK代码笔误:你前面定义的资源变量为
stuff,添加路径参数资源时误用了不存在的get变量 - 日志打印方式错误:使用
Object.keys遍历只能拿到一级键,嵌套对象的内容无法正确展示,改用JSON.stringify打印即可看到完整参数结构
正确CDK配置示例
const api = new apigateway.RestApi(this, "image-cache-api", { // 其他自定义配置 }) const stuff = api.root.addResource("stuff") // 从已定义的stuff资源下添加路径参数 const stuffWithId = stuff.addResource("{id}") // 直接关联Lambda即可,不需要额外传参配置 stuffWithId.addMethod("GET", new apigateway.LambdaIntegration(stuffLambda))
Lambda参数获取方式
部署后调用https://<api path>/stuff/1234,可直接通过如下方式取值:
const id = event.pathParameters.id // 打印完整event对象请使用JSON.stringify console.log(JSON.stringify(event, null, 2))
错误配置说明
你之前写的requestTemplate配置报类型错误,是因为LambdaIntegrationOptions中对应的配置项为复数形式的requestTemplates,且该场景下完全不需要自定义映射模板,使用默认配置即可。
内容的提问来源于stack exchange,提问作者Roger Heathcote
相关产品推荐
相关产品推荐

