Lambda增改功能正常,但通过API Gateway调用时Payload传递失败
问题解决步骤
问题根源:API Gateway会将POST请求的JSON payload以字符串格式存入Lambda事件的event.body字段,而你在Lambda控制台测试时直接传入的是已解析的JSON对象,代码直接读取event.FingerPrint自然会拿到undefined,触发必填字段缺失的错误。
直接按以下方式修复:
- 在Lambda函数开头先解析
event.body为JSON对象,再从中读取所需字段:
以Node.js为例:
以Python为例:// 先解析请求体字符串 let requestBody; try { requestBody = JSON.parse(event.body); } catch (err) { // 处理非法JSON的情况,返回400错误 return { statusCode: 400, body: JSON.stringify({ message: "Invalid request body" }) }; } // 从解析后的对象中获取字段 const fingerPrint = requestBody.FingerPrint; const ipAddress = requestBody.IpAddress; const votes = requestBody.Votes; // 后续逻辑...import json def lambda_handler(event, context): try: request_body = json.loads(event['body']) except json.JSONDecodeError: return { 'statusCode': 400, 'body': json.dumps({'message': 'Invalid request body'}) } finger_print = request_body.get('FingerPrint') ip_address = request_body.get('IpAddress') votes = request_body.get('Votes') # 后续逻辑... - 不需要额外配置API Gateway的映射模板,默认的传递方式就可以正常工作,只要在Lambda里做好字符串解析即可。
内容的提问来源于stack exchange,提问作者Jeremy Thompson
相关产品推荐
相关产品推荐

