2016-12-15 55 views
0

我們一直在編寫我們的RAML規範,並且我們一直在單獨的文件中定義數據類型。喜歡的東西:RAML包含和多重繼承

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

,工作正常,但根據腎錯構瘤規格您可以通過使用該type領域的YAML數組類型使用多重繼承。

但是但是,如果我嘗試與包括要做到這一點,我總是得到同樣的錯誤: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

可以像你說的那樣定義多繼承,但我認爲它不適用於內聯類型。

因此,您應該首先指定類型的定義,然後使用以前定義的類型的鍵指定多重繼承。

例如:

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

0

其實,我已經發現瞭如何與包括多個類型的文件(儘管它並沒有在文檔中的例子來表示) - 在RAML文件的根目錄只需添加:

uses: 
    file: path/to/file.raml 
    otherfile: path/to/otherFile.raml 
    yetanother: path/to/yetanother.raml 
+0

根據規範'使用'鍵輸入庫。這意味着,要引用此解決方案導入的內容,您需要直接使用'file.MyType'而不是'MyType'。至少這就是記錄。 – Dschee