我们一直在编写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不支持?
答案 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)