代码之家  ›  专栏  ›  技术社区  ›  Andres Urrego Angel

返回API网关AWS的有效负载

  •  0
  • Andres Urrego Angel  · 技术社区  · 8 年前

    我在python 3.6中创建了一个lambda函数,用于向API网关返回少量记录。根据 documentation的返回标准必须是:

    。{
    “isbase64encoded”:“布尔值”,
    “statuscode”:“数字”,
    “headers”:…}
    “body”:“json字符串”
    }
    
    
    

    但是,我需要返回缓存在列表中的数据,并将其解析为JSON格式以按要求的格式返回,但它无法通过,显然,我无法将变量赋给body:。

    def lambda处理程序(事件,上下文):
    
    if event[“httpmethod”]=“获取”:
    param1=事件[“queryStringParameters”][“param1”]
    param2=事件[“queryStringParameters”][“param2”]
    
    
    信息=红移获取输出(参数1,参数2)
    有效载荷=json.dumps(信息)
    
    打印(有效载荷)
    
    结果={
    “isbase64encoded”:“false”,
    “statuscode”:200,
    “headers”:“header”:“headerValue”,
    “body”:有效载荷
    }
    
    返回结果
    
    
    

    当我像这样运行它时,我得到了API网关执行中的成功消息,但主体不包含任何内容:()

    有人知道我怎么能搞清楚。非常感谢必须是:

    {
      "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网关执行中的成功消息,但主体不包含任何内容:(

    enter image description here

    有人知道我怎么能搞清楚。非常感谢

    1 回复  |  直到 8 年前
        1
  •  1
  •   Andres Urrego Angel    8 年前

    []

    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