如何使用AWS HTTP API发起POST请求?Lambda参数获取异常求助
解决AWS HTTP API POST请求与Lambda参数获取问题
让我一步步帮你搞定这两个问题:先解决Lambda返回undefined的bug,再讲清楚如何用AWS HTTP API配置并发送POST请求。
1. 为什么key是undefined?
你现在的Lambda代码直接从event.key取参数,但AWS HTTP API会把POST请求的**请求体(body)**打包成JSON字符串存在event.body字段里,不是直接把参数挂在event对象上。所以直接取event.key肯定拿不到值,返回undefined是必然的。
2. 修复Lambda函数代码
修改你的Lambda代码,先解析event.body里的JSON字符串,再从中提取key参数:
exports.handler = async (event) => { // 先处理请求体解析,兼容空请求或非JSON格式的情况 let requestBody = {}; if (event.body) { try { requestBody = JSON.parse(event.body); } catch (err) { return { statusCode: 400, body: JSON.stringify({ error: "请求体不是合法的JSON格式" }) }; } } const key = requestBody.key; const response = { statusCode: 200, body: `Hello from Lambda! ${key || '未提供key参数'}`, }; return response; };
3. 配置AWS HTTP API支持POST请求
确保你的HTTP API正确配置了POST路由并集成到Lambda:
- 登录AWS控制台,进入API Gateway -> 你的HTTP API
- 到Routes页面,点击「Create route」:
- 请求方法选
POST - 填写路由路径(比如
/invoke-lambda)
- 请求方法选
- 为这条路由配置集成:
- 选择「Lambda function」作为集成目标
- 选中你的Lambda函数
- 确认集成请求的Payload format version是
2.0(这是HTTP API默认值,会把请求体放在event.body里)
4. Postman测试的正确方式
用Postman发送POST请求时注意这几点:
- 请求方法选
POST,URL填你的HTTP API调用地址+路由路径(比如https://abc123.execute-api.us-east-1.amazonaws.com/invoke-lambda) - 切换到Body标签,选择
raw-> 格式选JSON,然后输入参数:{ "key": "我的测试key" } - 发送请求,就能收到响应:
Hello from Lambda! 我的测试key
内容的提问来源于stack exchange,提问作者rounak tadvi
相关产品推荐
相关产品推荐

