Amazon web services 如何将方法请求主体中的值映射到API网关映射模板中?
我有一个用Java编写的lambda,它接受该结构的请求对象Amazon web services 如何将方法请求主体中的值映射到API网关映射模板中?,amazon-web-services,aws-lambda,aws-api-gateway,Amazon Web Services,Aws Lambda,Aws Api Gateway,我有一个用Java编写的lambda,它接受该结构的请求对象 { "id": "1", "value": "foobar" } 当我通过这个对象的测试接口调用这个Lambda时,它工作得很好 我想创建一个API,其中将请求放入/items/1(即/items/{id})中,请求主体为 { "value": "foobar" } 这叫Lambda 我已经适当地创建
{
"id": "1",
"value": "foobar"
}
当我通过这个对象的测试接口调用这个Lambda时,它工作得很好
我想创建一个API,其中将请求放入/items/1
(即/items/{id}
)中,请求主体为
{
"value": "foobar"
}
这叫Lambda
我已经适当地创建了API资源项
,以及{id}
我已经创建了PUT
方法(在/items/{id}
上)并将其与lambda关联
我创建了一个映射模板,将id
从路径映射到对象
{
"id": "$method.request.path.id"
}
但是,如何将值
从请求主体映射到模板中,以便获得表单的集成请求
{
"id": "1", // came from path
"value": "foobar" // came from HTTP request body
}
如何实现此映射?尝试此应用程序/json
映射模板:
{
"id": "$method.request.path.id",
"body" : $input.json('$')
}
然后在lambda:console.log(event.body)
我在模板中发现这是可行的
#set($inputRoot = $input.path('$'))
{
"id": "$method.request.path.id",
"value": $inputRoot.value
}
这对我不起作用,因为事件的形式必须是{id,value}
,而不是{id,body.value}
,这是一个如何使用$input.json('$)
读取body
的示例。我看到您在解决方案中使用了它。