首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RAML包含和多重继承

RAML包含和多重继承
EN

Stack Overflow用户
提问于 2016-12-15 19:13:37
回答 2查看 4.9K关注 0票数 1

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

代码语言:javascript
复制
%#RAML 1.0 DataType
type: !include ../base-type.raml
description: Lorem ipsum
properties:
    foo: string

它工作得很好,但是根据RAML规范,您可以通过对type字段使用YAML数组类型来使用多重继承。

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

我试过这样做:

代码语言:javascript
复制
type: [!include ../base-type.raml]

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

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

但所有这些都会产生相同的错误。这是我做错了吗?还是在RAML中不受支持?

EN

回答 2

Stack Overflow用户

发布于 2016-12-15 23:00:50

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

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

例如:

代码语言:javascript
复制
types:
  Person:
    type: object
    properties:
      name: string
  Employee:
    type: object
    properties:
      employeeNr: integer

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

代码语言:javascript
复制
Teacher:
    type: [ Person, Employee ]

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

代码语言:javascript
复制
/someresource:
  get:
    responses:
      200:
        body:
          application/json:
            type: Teacher

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

代码语言:javascript
复制
/someresource:
  get:
    responses:
      200:
        body:
          application/json:
            type: [ Person, Employee ]

它们还可以与includes一起使用,例如:

代码语言:javascript
复制
types: !include myTypes.raml

但为了更清楚起见,我没有在上面的例子中使用include。

更多信息here

票数 3
EN

Stack Overflow用户

发布于 2017-01-12 15:15:37

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

代码语言:javascript
复制
uses:
  file: path/to/file.raml
  otherfile: path/to/otherFile.raml
  yetanother: path/to/yetanother.raml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41162768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档