创建API治理自定义规则集校验client-id-auth遇异常求助
RAML自定义校验规则集修复:确保端点必含client-id-auth trait
问题
我正尝试创建自定义规则集,校验RAML中所有端点是否已包含client-id-auth(基础认证)trait,但规则集未按预期工作——即使在端点的is字段中添加了该trait,仍会触发错误提示,推测规则集编写存在疏漏。
原规则集(错误)
client-id-auth-check: message: 所有端点必须使用client-id-auth trait targetClass: apiContract.EndPoint propertyConstraints: apiContract.ParametrizedTrait: name: client-id-auth minCount : 1
测试用RAML(已正确引用trait)
#%RAML 1.0 title: 合规API traits: client-id-auth: description: 该trait代表客户端ID认证要求。 /users: get: is: [client-id-auth] responses: 200: description: 成功获取用户列表。
问题根源
规则集的propertyConstraints配置逻辑错误:apiContract.EndPoint模型中,存储端点已应用trait的属性是appliedTraits,而非直接指定trait类作为属性名。原规则集直接校验apiContract.ParametrizedTrait类,无法关联到端点实际应用的trait列表。
修正后的规则集
client-id-auth-check: message: 所有端点必须使用client-id-auth trait targetClass: apiContract.EndPoint propertyConstraints: appliedTraits: minCount: 1 propertyConstraints: name: pattern: ^client-id-auth$
关键调整说明
- 针对
appliedTraits属性设置约束:这是EndPoint模型中存储已应用trait的字段,对应RAML里的is数组 minCount: 1:要求端点至少应用一个trait- 嵌套校验
trait的name属性:通过正则^client-id-auth$确保存在名称完全匹配的trait
修正后,规则集会正确识别端点通过is引用的client-id-auth trait,不再出现误报。
内容的提问来源于stack exchange,提问作者user1969720
相关产品推荐
相关产品推荐

