如何在体映射模板AWS API Gateway中连接方法请求参数

时间:2017-03-24 11:04:41

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

我正在尝试使用主哈希和排序组合复合从AWS DynamoDB检索条目列表。

我们的想法是检索与给定查询字符串值匹配的列表,该值是排序键的一部分,例如,排序键可以是 a_b_c a_d_e a_f_g ,我需要在其中输入 b 的所有条目。

我要求客户端提供三个查询字符串,并将它们连接到AWS API网关的集成请求部分的正文映射模板中。

我正在网上搜索完成同样的事情但是找不到解决方案的成功之处。

如果有人可以帮助我,这会节省很多时间。

以下是我的方法。

{
    "TableName": "$util.escapeJavaScript("$context.stage\_TableName").replaceAll("\\","")",
    "FilterExpression": "identityId = :v1 and aWithbWithc = :v2 + _ + :v3 + _ + :v4",
    "ExpressionAttributeValues": {
        ":v1": {
            "S": "$context.identity.cognitoIdentityId"
        },
        ":v2" : {
            "S" : "$input.params('a')"
        },
        ":v3" : {
            "S" : "$input.params('b')"
        },
        ":v4" : {
            "S" : "$input.params('c')"
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我找到了解决方案并将其放在这里。

{
    "TableName": "$util.escapeJavaScript("$context.stage\_TableName").replaceAll("\\","")",
    "FilterExpression": "identityId = :v1 and aWithbWithc = :v2",
    "ExpressionAttributeValues": {
        ":v1": {
            "S": "$context.identity.cognitoIdentityId"
        },
        ":v2" : {
            "S" : "$util.escapeJavaScript($input.params('a'))__$util.escapeJavaScript($input.params('b'))__$util.escapeJavaScript($input.params('c'))"
        }
    }
}

答案 1 :(得分:0)

你可以有类似的东西

{
#set($tableNameSuffix = "_TableName")
"TableName": "$stageVariables.environment$tableNameSuffix",
"ConsistentRead": true,
"KeyConditionExpression": "XXX = :val",
"ExpressionAttributeValues": {
        ":val": {
        "S": "$method.request.path.xxx"
        }
    }
}