如何访问AWS Gateway API网关中的字符串路径参数

时间:2017-04-13 22:17:37

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

所以我有类似

的东西
my/path/123

这很好用。

然而,当我尝试使用字符串" asdf"

my/path/"asdf"

我明白了

{"message": "Could not parse request body into json: Unexpected character (\'%\' (code 37)): expected a valid value (number, String, array, object, \'true\', \'false\' or \'null\')\n at [Source: [B@420db2ef; line: 2, column: 13]"}

如果我尝试用w / o引号(所以我的/ path / asdf)我得到了这个:

{"message": "Could not parse request body into json: Unrecognized token \'asdf\': was expecting (\'true\', \'false\' or \'null\')\n at [Source: [B@7fba20c8; line: 2, column: 17]"}

如果我尝试https://7mdamwt4jg.execute-api.us-east-1.amazonaws.com/prod/%22asdf%22

(%22代表双引号)

我明白了:

{"message": "Could not parse request body into json: Unexpected character (\'%\' (code 37)): expected a valid value (number, String, array, object, \'true\', \'false\' or \'null\')\n at [Source: [B@7f4f2919; line: 2, column: 13]"}

我还能尝试什么?

2 个答案:

答案 0 :(得分:1)

您可以在集成请求中创建一个正文映射模板,并获取如下所示的路径参数

{
 "PathName" : "$input.params('PathName')"
}

其中'PathName'是路径参数的名称。

假设您的路径名是UserId,那么您可以像使用event.UserId一样在Lambda函数中获取参数。请参阅下面的屏幕截图以进入正文映射模板,

enter image description here

enter image description here

答案 1 :(得分:0)

此错误表示您的Lambda函数无法将请求字符串解析为json。问题很可能出现在您的映射模板中。请参阅此处的工作示例https://gist.github.com/rpgreen/5cd3d5c872781335a5d3