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

如何在RAML中同时启用additionalProperties:false与模式属性?

解决RAML中同时限制额外属性与支持模式属性的问题

你遇到的问题完全符合RAML的规范约束——当显式设置additionalProperties: false时,properties字段里不允许出现正则命名的模式属性,因为RAML会把这些正则属性当成“未明确指定的额外属性”来处理,所以才会报出extraneous key [...] is not permitted的错误。

要实现“只允许固定属性+符合特定模式的属性,禁止其他所有额外属性”的需求,你需要用到RAML 1.0引入的**patternProperties字段**——它专门用来定义匹配正则表达式的动态属性,和固定名称属性的properties字段是分开的。

正确的RAML类型定义写法

types:
  Person:
    description: |-
      Document representing a person.
    # 定义固定名称的属性
    properties:
      firstName?:
        description: |-
          The person's first name
        type: string
    # 定义匹配正则的动态属性
    patternProperties:
      /^person_info_.+$/?:
        description: Additional person info.
        type: string
    # 禁止所有未在properties/patternProperties里定义的额外属性
    additionalProperties: false

这个写法的效果

  • 允许firstName这类固定名称的属性(可选)
  • 允许所有符合/^person_info_.+$/正则的属性,比如person_info_age、person_info_work等
  • 直接拒绝任何既不在properties里、又不匹配patternProperties正则的属性(比如lastName、address),完全符合你的需求。

本质上,patternProperties就是RAML用来专门处理“动态命名但有规则的属性”的字段,和additionalProperties: false搭配使用时,既能严格控制属性范围,又能支持模式化的动态属性,完美解决你遇到的冲突问题。

内容的提问来源于stack exchange,提问作者pst

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:48:54