API GATEWAY使用Mock集成时无法获取请求体问题咨询
API Gateway Mock集成无法获取请求体的常见原因
- 映射模板未匹配正确的Content-Type
集成请求的映射模板配置中没有显式添加application/json类型的对应模板,即使接口层声明了接收application/json格式请求,集成侧模板如果仅配置了*/*或其他类型的匹配规则,也会导致请求体解析逻辑不生效。 - Mock集成默认关闭请求体透传
Mock集成的原生设计定位是快速返回模拟响应,默认不会将客户端传入的原始请求体传递到映射模板上下文。你需要在集成请求设置中开启将请求正文传递到集成的开关,旧版控制台需将「内容处理」项设置为PASSTHROUGH。 - 方法请求侧验证配置冲突
如果在方法请求层开启了请求验证器,且配置了校验请求体规则但没有配套上传对应的JSON Schema,验证环节会提前将请求体置空后再传递到集成侧,导致映射模板环节无法拿到内容,而日志中记录的是未经过验证处理的原始请求。 - Velocity上下文类型判断误差
你观测到的$input.body == ""返回false,是因为未正确获取到请求体时,对应变量在Velocity上下文中为Undefined类型而非空字符串,和空字符串做等值判断自然返回false,不代表实际拿到了非空的请求体内容。
验证技巧:可以在映射模板中加入
#set($rawBody = $util.escapeJavaScript($input.body)),将$rawBody放到模拟响应中返回,即可直接观测到映射模板实际拿到的原始请求内容,排除类型隐式转换带来的判断干扰。
内容的提问来源于stack exchange,提问作者Vijeth Kashyap
相关产品推荐
相关产品推荐

