首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么API调用返回内部服务器错误?

为什么API调用返回内部服务器错误?
EN

Stack Overflow用户
提问于 2020-04-25 06:37:22
回答 2查看 69关注 0票数 0
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def lambda_handler(event, context):
 data = json.loads(json.dumps(event))
 #payload = data['data'] #---------------------->1
 payload = "9,3,1,0,0,1,1,1,1,0,0,1". #--------->2
 response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,ContentType='text/csv',Body=payload)
 result = json.loads(response['Body'].read().decode())

return {
    'statusCode': 200,
    'headers': { 'Content-Type': 'application/json' },
    'body': json.dumps({"isApproved": result})
};

当我通过API网关调用这个Lamda函数时,我能够得到我想要的东西--我提出了一个post请求。

但是,当我取消注释行-->1和注释-->2时,对于同一个post请求,我会得到{“message”:“”}。请注意,当我在lambda本身中运行任何一种方式时,请注意,它们都很好地工作,并且返回完全相同的结果。当我们发出API post调用时,这个问题就会出现。如果你有什么想法请告诉我。

EN

回答 2

Stack Overflow用户

发布于 2020-04-25 14:30:35

API在事件的body属性中压缩HTTP请求主体。

要从事件中获取请求体(有效负载),您需要从' body‘属性获取它。

payload = json.loads(event['body'])

票数 0
EN

Stack Overflow用户

发布于 2020-04-26 05:59:56

按照Khan上面的建议,将问题分类:代码应该如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def lambda_handler(event, context):
print("Received event: " + json.dumps(event, indent=2))
data = json.loads(event['body'])
payload = data['data']
response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,ContentType='text/csv',Body=payload)
result = json.loads(response['Body'].read().decode())

return {
    'statusCode': 200,
    'headers': { 'Content-Type': 'application/json' },
    'body': json.dumps({"isApproved": result})
};

但是,如果在Lambda中运行此操作,它将返回折叠错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"errorType": "KeyError",

尽管如此,API网关会使它变得非常好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61427332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文