2016-12-15 11 views
0

Wir haben unsere RAML-Spezifikation geschrieben und unsere Datentypen in separaten Dateien definiert. Etwas wie:RAML-Include und mehrfache Vererbung

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

der gut arbeitet, aber nach der RAML Spezifikation können Sie mehrere Vererbung durch die Verwendung eines YAML-Array-Typ für das type Feld.

Aber wie auch immer, wenn ich versuche, dies zu tun mit einschließt, habe ich immer die gleiche Fehlermeldung erhalten: INHERITING_UNKNOWN_TYPE

ich es so versucht habe:

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

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

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

Aber alle die gleichen Fehler ergeben. Mache ich das falsch oder wird dies nicht in RAML unterstützt?

Antwort

0

Mehrfachvererbung kann definiert werden, wie Sie sagen, aber ich denke nicht, dass es mit Inlined-Typen funktioniert.

Sie sollten zuerst die Definition der Typen angeben und dann die Mehrfachvererbung nur mit den Schlüsseln der zuvor definierten Typen angeben.

Zum Beispiel:

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

Sobald Sie das tun kann, eine neue Art erstellen, die von denen erben, zB:

Teacher: 
    type: [ Person, Employee ] 

und dann diese Art in einer Ressource verwenden:

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

oder direkt die Typen als Array dort angeben:

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

Dies funktioniert auch mit umfasst, z.B .:

types: !include myTypes.raml 

aber ich habe nicht mit der in den obigen Beispielen beinhaltet klarer sein.

Mehr Infos here

0

Eigentlich habe ich herausgefunden, wie mehrere Dateien mit Typen enthalten (obwohl es nicht in der Dokumentation Beispielen dargestellt wurde) - in der Wurzel RAML-Datei fügen Sie einfach:

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

Gemäß der Spezifikation importiert der Schlüssel 'uses' Bibliotheken. Das heißt, um auf etwas zu verweisen, das mit dieser Lösung importiert wird, müssen Sie direkt 'file.MyType' anstelle von' MyType' verwenden. Zumindest ist das dokumentiert. – Dschee

Verwandte Themen