【问题标题】:return payload for a API Gateway AWS返回 API Gateway AWS 的有效负载
【发布时间】:2018-12-15 11:19:56
【问题描述】:

我在 Python 3.6 中创建了一个 lambda 函数来将少量记录返回到 API 网关。根据documentation的返回标准必须是:

{
  "isBase64Encoded" : "boolean",
  "statusCode": "number",
  "headers": { ... },
  "body": "JSON string"
}

但是,我需要返回从列表中缓存并解析为 JSON 格式的数据,以便以所需的格式返回,但它没有通过,显然,我无法将变量分配给 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 Gateway 执行中收到成功消息,但正文不包含任何内容:(

请有人知道我该如何解决这个问题。非常感谢

【问题讨论】:

  • print(payload) 是否向 Lambda 日志写入任何内容?
  • 不,这不仅仅是为了验证我真的得到了我需要的字符串,但似乎我无法在变量中发送我的 json 数据,它必须是硬编码的:(
  • 我想不出它为什么不起作用。我认为您的变量恰好包含空数组的 JSON 表示。将其记录在 Lambda 日志中,然后进行验证。
  • @Michael-sqlbot 实际上这就是为什么我得到一个先前的打印来验证它没有变空,它不是所以我真的不知道为什么 API 不能打印它。
  • 我之前问过你,print(payload) 是否记录了任何内容,你说没有,但现在你说是。是记录还是不记录?

标签: python-3.x amazon-web-services aws-lambda api-gateway


【解决方案1】:

我终于想通了。问题是,即使我将有效负载的转换方法应用于 JSON,返回的字符串始终在开头和结尾都有方括号 []

我创建了一个客户替换函数来删除括号并将不带[] 的有效负载传递给我的返回函数。

脚本:

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

非常感谢

【讨论】:

    猜你喜欢
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 2016-02-10
    • 2019-08-24
    • 2019-12-13
    • 2020-08-12
    相关资源
    最近更新 更多