Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何将方法请求主体中的值映射到API网关映射模板中?_Amazon Web Services_Aws Lambda_Aws Api Gateway - Fatal编程技术网

Amazon web services 如何将方法请求主体中的值映射到API网关映射模板中?

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 我已经适当地创建

我有一个用Java编写的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
的示例。我看到您在解决方案中使用了它。