return API 网关 AWS 的负载
return payload for a API Gateway AWS
我在 Python 3.6 中创建了一个 lambda 函数,以便 return 一些记录到 API 网关。根据 documentation 的 return 标准必须是:
{
"isBase64Encoded" : "boolean",
"statusCode": "number",
"headers": { ... },
"body": "JSON string"
}
但是,我需要 return 从列表中缓存的数据并解析为 JSON 格式以 returned 为所需格式,但显然,它不会通过,我无法将变量分配给 body
:
def lambda_handler(event, context):
if event["httpMethod"] == "GET":
param1 = event["queryStringParameters"]["param1"]
param2 = event["queryStringParameters"]["param2"]
info = redshift_get_output(param1,param2)
payload = json.dumps(info)
print(payload)
outcome = {
"isBase64Encoded": 'false',
"statusCode": 200,
"headers": { "header": "headerValue" },
"body": payload
}
return outcome
当我 运行 时,我在我的 API 网关执行中收到成功消息,但正文不包含任何内容:(
请有人知道我该如何解决这个问题。非常感谢
我终于弄明白了。问题是,即使我将有效负载的转换方法应用到 JSON,returning 的字符串始终在开头和结尾都有方括号 []
.
我创建了一个客户替换函数来删除括号并将没有 []
的有效载荷传递给我的 return 函数。
脚本:
def replace_all(text, dic):
for i, j in dic.items():
text = text.replace(i, j)
return text
def lambda_handler(event, context):
if event["httpMethod"] == "GET":
param1 = event["queryStringParameters"]["param1"]
param2 = event["queryStringParameters"]["param2"]
rep = {"[": "", "]": ""}
info = redshift_get_output(param1,param2)
payload = json.dumps(info)
payload = replace_all(payload,rep)
print(payload)
outcome = {
"isBase64Encoded": 'false',
"statusCode": 200,
"headers": { "header": "headerValue" },
"body": json.loads(payload)
}
return outcome
非常感谢
我在 Python 3.6 中创建了一个 lambda 函数,以便 return 一些记录到 API 网关。根据 documentation 的 return 标准必须是:
{
"isBase64Encoded" : "boolean",
"statusCode": "number",
"headers": { ... },
"body": "JSON string"
}
但是,我需要 return 从列表中缓存的数据并解析为 JSON 格式以 returned 为所需格式,但显然,它不会通过,我无法将变量分配给 body
:
def lambda_handler(event, context):
if event["httpMethod"] == "GET":
param1 = event["queryStringParameters"]["param1"]
param2 = event["queryStringParameters"]["param2"]
info = redshift_get_output(param1,param2)
payload = json.dumps(info)
print(payload)
outcome = {
"isBase64Encoded": 'false',
"statusCode": 200,
"headers": { "header": "headerValue" },
"body": payload
}
return outcome
当我 运行 时,我在我的 API 网关执行中收到成功消息,但正文不包含任何内容:(
请有人知道我该如何解决这个问题。非常感谢
我终于弄明白了。问题是,即使我将有效负载的转换方法应用到 JSON,returning 的字符串始终在开头和结尾都有方括号 []
.
我创建了一个客户替换函数来删除括号并将没有 []
的有效载荷传递给我的 return 函数。
脚本:
def replace_all(text, dic):
for i, j in dic.items():
text = text.replace(i, j)
return text
def lambda_handler(event, context):
if event["httpMethod"] == "GET":
param1 = event["queryStringParameters"]["param1"]
param2 = event["queryStringParameters"]["param2"]
rep = {"[": "", "]": ""}
info = redshift_get_output(param1,param2)
payload = json.dumps(info)
payload = replace_all(payload,rep)
print(payload)
outcome = {
"isBase64Encoded": 'false',
"statusCode": 200,
"headers": { "header": "headerValue" },
"body": json.loads(payload)
}
return outcome
非常感谢