You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:05:18