2017-10-17 3 views
1

definieren Angenommen, dass ich diese Definition in einer yaml OpenAPI Definition habeOpenAPI Wiederverwendung Teil der Definition ohne eine neues

definitions: 
    User: 
    description: "User" 
    type: "object" 
    properties: 
     firstname: 
     type: "string" 
     lastname: 
     type: "string" 
     password: 
     type: "string" 
     email: 
     type: "string" 
     username: 
     type: "string" 

Wenn in einem Parameter Spezifikation I bestimmte Bereiche einer Definition benötigen, wie kann ich sie beziehen, ohne zu definieren ein anderes Modell wie unten?

definitions: 
    UserLogin: 
    description: "User" 
    type: "object" 
    properties: 
     password: 
     type: "string" 
     email: 
     type: "string" 

Antwort

1

In Ihrer Frage, verwenden Sie definitions Stichwort, was Ihre Frage deutet an, dass etwa OpenAPI v2 aka. Swagger ist. Für OpenAPI v3 sollten die unten angegebenen Definitionen in den entsprechenden Abschnitten Components Object definiert werden.

Um dies zu erreichen, müssen Sie Composition mit dem Schlüsselwort allOf verwenden. Es gibt ein großartiges Beispiel, das sich auf Ihre Frage here bezieht. Zuerst müssen Sie ein kleineres Objekt definieren und dann sind sie in die Definition eines größeren wie folgt:

definitions: 
    UserLogin: 
    description: User Login 
    type: object 
    properties: 
     password: 
     type: string 
     email: 
     type: string 
    User: 
    allOf: 
    - $ref: '#/definitions/UserLogin' 
    - description: User 
     type: object 
     properties: 
     firstname: 
      type: string 
     lastname: 
      type: string 
     username: 
      type: string 

Es ist erwähnenswert, dass:

  • Einige leichtere Implementierungen nicht allOf Stichwort unterstützen.
  • Die Verwendung von Komposition kann die Lesbarkeit der Dokumentation erhöhen oder verringern, abhängig von der Komplexität und der Auswahl der Wörter, die zum Benennen der Schemas verwendet werden.
Verwandte Themen