2017-10-10 92 views
0

documentation指出json应返回包含所有我拥有的主体,标题和状态代码。但是,无论什么原因,当我在API网关中测试它时,它会返回格式错误的响应。AWS API网关格式错误的Lambda响应

这是下面方法的输出。

“{\” 身体\ “:200,\” 报头\ “:{\” 内容类型\ “: \” 应用程序/ JSON \ “},\” 的StatusCode \ “:200}”

def addnumbers(message, context): 

    result = message['num1'] + 1 
    print(result) 
    resp = { 
     "statusCode": 200, 
     "body": result, 
     "headers": { "Content-type": "application/json"} 
    } 
    return (json.dumps(resp)) 

我目前传递NUM1 = 1,并没有给出任何更好的错误消息。任何指导将不胜感激。

+1

当您尝试直接返回响应对象会发生什么,而不是使用'json.dumps'将其转换为字符串?只需'返回resp'? –

+0

仍然是同样的问题,它可能是其他影响它的代码吗? –

+0

您确定它正在返回该响应并且不会抛出错误吗?您是否在CloudWatch中检查函数的日志? –

回答

0

好吧扣上一个答案。

请确保您已启用代理集成,以便在您的API中使用任何资源。

现在去你的lambda。看看我以前试图通过num1.I是试图从“事件”或消息得到它。这是我绊倒的地方。另外请注意(you can't do a get with a body) 相反,lambda的输入应该是这样的。

{ “queryStringParameters”:{ “输入”: “无论输入你想要的拉姆达测试” } }所以,现在我们已经配置了我们的测试

lambda我们需要编码lambda本身。

我把这段代码中:

高清lambda_handler(事件上下文):

number = "Hello, " + event['queryStringParameters']['input'] 
out = {} 
out['statusCode'] = 200 
out['body'] = number 

return (out) 

现在,如果你测试它应该罚款。

回到API网关 在投入输入“查询字符串”节= randomname

现在应该有个招呼回来,randomname