Azure APIM Validate-Content忽略属性名大小写问题咨询
解决Validate-Content忽略属性名大小写的问题
核心思路
Validate-Content默认严格匹配属性名大小写,要绕过这个限制,得先统一请求体属性名的大小写,再执行验证操作,让处理后的字段和API规范里的字段完全匹配。
具体实现步骤
- 预处理请求体:在Validate-Content执行前,添加脚本步骤把请求体的所有属性名转换成和API规范一致的大小写(比如全小写或全大写)。
以JavaScript环境为例(适配多数网关/API管理工具的脚本能力):// 解析原请求体 const rawBody = JSON.parse(context.request.body); // 统一属性名为小写(若规范是大写则改用toUpperCase()) const normalizedBody = {}; Object.keys(rawBody).forEach(key => { normalizedBody[key.toLowerCase()] = rawBody[key]; }); // 替换原请求体为处理后的版本 context.request.body = JSON.stringify(normalizedBody); - 保持原验证配置:继续使用
action="prevent"和allow-additional-properties="false",此时验证的是统一大小写后的请求体,不会再因大小写差异触发错误。
关于detect模式无效的说明
detect模式仅负责检测并返回错误列表,不会自动修正属性名大小写问题,因此无法直接解决你的需求,必须配合预处理步骤统一字段格式后,再用prevent模式完成严格验证。
内容的提问来源于stack exchange,提问作者Vikram Sudhini
相关产品推荐
相关产品推荐

