RAML包含和多重继承

时间:2016-12-15 11:13:37

标签: raml

我们一直在编写RAML规范,并且我们已经在单独的文件中定义了我们的数据类型。类似的东西:

%#RAML 1.0 DataType
type: !include ../base-type.raml
description: Lorem ipsum
properties:
    foo: string

哪种方法正常,但根据RAML规范,您可以使用type字段的YAML数组类型来使用多重继承。

但是,如果我尝试使用includes执行此操作,我总会得到同样的错误:INHERITING_UNKNOWN_TYPE

我试过这样的话:

type: [!include ../base-type.raml]

type: [!include ../base-type.raml, !include ../another-type.raml]

type:
  - !include ../base-type.raml
  - !include ../another-type.raml

但都会产生同样的错误。我这样做错了还是RAML不支持?

2 个答案:

答案 0 :(得分:1)

可以像你说的那样定义多重继承,但我认为它不适用于内联类型。

因此,您应首先指定类型的定义,然后仅使用先前定义的类型的键指定多重继承。

例如:

types:
  Person:
    type: object
    properties:
      name: string
  Employee:
    type: object
    properties:
      employeeNr: integer

一旦你这样做,你可以创建一个继承自那些的新类型,例如:

Teacher:
    type: [ Person, Employee ]

然后在某些资源中使用该类型:

/someresource:
  get:
    responses:
      200:
        body:
          application/json:
            type: Teacher

或直接将类型指定为数组:

/someresource:
  get:
    responses:
      200:
        body:
          application/json:
            type: [ Person, Employee ]

这些也适用于包括,例如:

types: !include myTypes.raml

但我没有使用上面例子中的包含更清楚。

更多信息here

答案 1 :(得分:0)

实际上,我已经找到了如何在类型中包含多个文件(虽然它没有在文档示例中表示) - 在RAML文件的根目录中只需添加:

 val ts = current_timestamp()
    val df:SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd")
    val date:String = df.format(ts.toLong)