Lambda自定义API响应状态码未在Postman生效,如何解决?
解决Lambda返回状态码在Postman不显示的问题
以下是针对性的排查和解决步骤:
1. 确认API Gateway集成类型
如果使用的是Lambda代理集成,你的响应格式本身符合要求,但需确保API Gateway的资源方法已启用代理集成:
- 进入API Gateway控制台,找到目标资源的方法(如GET/POST)
- 查看"集成请求",确认"集成类型"为Lambda代理集成(已勾选"使用Lambda代理集成")
2. 完善Lambda响应格式(代理集成必做)
代理集成要求响应包含headers字段(至少指定Content-Type),否则API Gateway可能无法正确解析状态码。修改你的响应代码:
import json response404 = { "statusCode": 404, "headers": { "Content-Type": "application/json" }, "body": json.dumps({"message": "Not Found"}) } # 同时确保output_response也遵循相同格式 if httpStatusCode == "200": # 示例符合规范的output_response格式 output_response = { "statusCode": 200, "headers": { "Content-Type": "application/json" }, "body": json.dumps({"data": "your content"}) } return output_response else: return response404
3. 非代理集成的状态码映射配置(若未使用代理)
如果是Lambda非代理集成,需要手动配置API Gateway的响应映射:
- 进入目标方法的"方法响应",添加404状态码,并配置对应的响应头(如
Content-Type) - 进入"集成响应",为404状态码设置映射模板:
- 选择"添加映射模板",输入
application/json - 在模板中输入以下内容,将Lambda返回的body映射到响应体:
#set($inputRoot = $input.path('$')) $inputRoot.body - 确保集成响应的"状态码"设置为404,并关联到Lambda返回的判断条件(如根据Lambda返回的字段匹配)
- 选择"添加映射模板",输入
4. 重新部署API
所有配置修改后,必须部署API到对应的阶段(如prod/test),否则更改不会生效。部署步骤:
- 在API Gateway控制台点击"部署API"
- 选择目标阶段,确认部署
5. 验证Lambda返回内容
在Lambda控制台测试函数,检查返回的响应是否正确包含statusCode字段(值为404或200),以及完整的headers和body。如果Lambda返回正确,问题则集中在API Gateway配置。
内容的提问来源于stack exchange,提问作者Irfan
相关产品推荐
相关产品推荐

