将列表对象映射到AWS API网关以获取POST请求的正确方法是什么?

时间:2016-12-04 20:14:36

标签: amazon-web-services aws-api-gateway

我的映射模板是:

{ 
    "TableName": "Lists",
    "Item": {
    "listid": {
            "S": "$context.requestId"
            },
        "title": {
            "S": "$input.path('$.title')"
            },
        "places": {
            "L": $input.path('$.places')
        }
    }
}

我得到的错误是:

{"__type": "com.amazon.coral.service#SerializationException",
      "Message": "Expected null"}

如果我将places对象更改为“S”并传入一个字符串,一切正常,但我无法获得正确传递的列表。

以下是我的API网关控制台测试请求正文:

{
  "title": "Title",
  "places": ["place 1", "place 2"]
}

以下是转换后的请求:

Endpoint request body after transformations: { 
"TableName": "Lists",
"Item": {
"listid": {
        "S": "test-invoke-request"
        },
    "title": {
        "S": "Title"
        },
    "places": {
        "L": ["place 1","place 2"]
    }
}

}

1 个答案:

答案 0 :(得分:0)

我在这里找到了答案: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_AttributeValue.html

对于字符串列表,正确的属性值为“SS”。 “L”保留用于属性值对象列表。

因此,要让原始请求正文通过,我必须重新格式化为:

    { "title": "Title2",
      "places": [{"S": "place 1"}, {"S": "place 2"}]
     }