如何将 JSON 字符串作为查询参数传递给 API 网关
How to pass a JSON string to API Gateway as query Parameter
如何将 JSON 对象(如 {val: 1}
)作为查询参数传递给我的 Lambda 函数?
在 Standardized way to serialize JSON to query string? 之后,我 URL 编码了我的 JSON 对象并请求了以下内容:mysite.com/path?json=%7B%22val%22%3A%201%7D
作为requestTemplates我尝试了以下两个选项
"json": "$input.params().querystring.json"
"json": "$util.parseJson($input.params().querystring.json)"
但我收到此错误消息:
{"message": "Could not parse request body into json: Unexpected
character (\'v\' (code 118)): was expecting comma to separate OBJECT
entries\n at [Source: [B@37a2970e; line: 1, column: 47]"}
如果我不对查询字符串进行编码,那么:mysite.com/path?json={"val":1}
我收到 400 错误
- 您的映射模板未生成有效 JSON,您必须将 key/value 对括在花括号中
- 我猜你不想把值用引号括起来,否则它将是一个字符串而不是对象
- 您可以使用
$util.urlDecode
解码 URL 编码的字符串
您的映射模板应如下所示:
{"json": $util.urlDecode($input.params().querystring.json)}
对于 mysite.com/path?json=%7B%22val%22%3A%201%7D
,此映射模板将产生以下结果 JSON:
{
"json": {
"val": 1
}
}
如果您希望在根级别将查询字符串 JSON 传递给您的 Lambda 函数,请将其用作映射模板:
$util.urlDecode($input.params().querystring.json)
如何将 JSON 对象(如 {val: 1}
)作为查询参数传递给我的 Lambda 函数?
在 Standardized way to serialize JSON to query string? 之后,我 URL 编码了我的 JSON 对象并请求了以下内容:mysite.com/path?json=%7B%22val%22%3A%201%7D
作为requestTemplates我尝试了以下两个选项
"json": "$input.params().querystring.json"
"json": "$util.parseJson($input.params().querystring.json)"
但我收到此错误消息:
{"message": "Could not parse request body into json: Unexpected character (\'v\' (code 118)): was expecting comma to separate OBJECT entries\n at [Source: [B@37a2970e; line: 1, column: 47]"}
如果我不对查询字符串进行编码,那么:mysite.com/path?json={"val":1}
我收到 400 错误
- 您的映射模板未生成有效 JSON,您必须将 key/value 对括在花括号中
- 我猜你不想把值用引号括起来,否则它将是一个字符串而不是对象
- 您可以使用
$util.urlDecode
解码 URL 编码的字符串
您的映射模板应如下所示:
{"json": $util.urlDecode($input.params().querystring.json)}
对于 mysite.com/path?json=%7B%22val%22%3A%201%7D
,此映射模板将产生以下结果 JSON:
{
"json": {
"val": 1
}
}
如果您希望在根级别将查询字符串 JSON 传递给您的 Lambda 函数,请将其用作映射模板:
$util.urlDecode($input.params().querystring.json)