API Gateway POST请求调用报错:JSON请求体解析失败排查
问题根源分析
1. curl命令格式错误
你提供的curl命令存在语法问题:'Content-Type: application/json'前缺少-H参数,curl会把这个字符串当作第二个URL而非请求头。这会导致:
- 请求未正确设置
Content-Type: application/json,API Gateway无法识别请求体格式; - 实际发送的请求结构混乱,可能导致API Gateway收到非预期的请求内容。
正确的curl命令应该是:
curl -i --location --request POST 'https://example.com/staging/transform' -H 'Content-Type: application/json' --data-raw '{"message":"test"}'
2. 请求体格式不匹配API Gateway配置
错误信息里的请求体是一段Base64编码字符串(解码后为{"message":"I like girls but have a wife so need to be discreet. ps. I have a big cock :p"}),但你的API Gateway配置为直接解析JSON格式请求体。API Gateway无法将Base64字符串解析为合法JSON,因此直接拦截请求,不会转发到Lambda。
3. 网站调用逻辑错误
网站端出现同样错误,大概率是请求逻辑存在问题:代码将JSON内容做了Base64编码后再发送,而非直接传递原始JSON字符串,同时未告知API Gateway请求体是Base64格式(比如设置对应的Content-Type或在API Gateway配置Base64解码)。
内容的提问来源于stack exchange,提问作者ThomasVdBerge
相关产品推荐
相关产品推荐

