2017-06-09 1 views
2

Ich versuche, auf der Registerkarte "Modell" und den Beispielwerten auf der Registerkarte "Beispielwert" für ein Objekt "swagger.yaml" mit optionalen ObjektenGeben Sie "Beispielwert" für das Objekt "swagger.yaml" mit optionalen Feldern an

mehr Beschreibung bereitzustellen

Mein Modell von meinem PATCH Anfrage (RestAPI) verwendet werden soll, definiert wie so in meinem swagger.yaml:

mymodel: 
    items: 
     - $ref: '#/definitions/modelHeader' 
     - $ref: '#/definitions/modelPayload' 

Derzeit MyModel hat 'Model' als "MyModel {}" und 'Beispielwert' als "{}"

modelHeader und modelPayload sind zusammengesetzte o Objekte mit definierten Beispielen. Obwohl Mymodel kein Feld anmeldet, möchte ich, dass diese optionalen Felder mit Beispielen angezeigt werden.

Ich weiß, dass ich wie so ein minimales das Beispiel definieren example: [{name: 'myname', value: 'myvalue1'},{name: 'myname2', value: 'myvalue2'}]

Aber das ist umständlich und noch nicht ‚Model‘ hat bevölkern. Ist es möglich, eine URL für ein JSON als Beispiel anzugeben?

Alle Hinweise oder Ideen würden geschätzt. Ich bin noch neu in YAML Spezifikation

+0

Ihre spec nicht gültig ist. Ist 'Mymodel' ein Array, das' modelHeader' und 'modelPayload' Objekte enthält, oder ein kombiniertes Objekt mit Eigenschaften von' modelHeader' und 'modelPayload'? – Helen

+0

Meine Spezifikation wirft keine Fehler auf [editor.swagger.io] (http://editor.swagger.io/#), daher glaube ich, dass sie gültig ist. Ich wollte, dass mein Modell ein Objekt ist, das "allOf" verwendet, aber es hat Fehler in yaml geworfen, also habe ich es in ein Array geändert. Die Produktfunktionalität funktioniert mit dieser – PeggyScott

+0

* änderte es zu einem Verzeichnis – PeggyScott

Antwort

1

Ihre spec sind nicht gültig, weil items benötigen einen einzigen Typen und kein Array von Typen:

items: 
    type: string 

# or 

items: 
    $ref: '#/definitions/something' 

I MyModel beabsichtigt, ein Objekt zu sein mit ‚allof‘

Die korrekte Syntax für allOf ist:

mymodel: 
    allOf: 
     - $ref: '#/definitions/modelHeader' 
     - $ref: '#/definitions/modelPayload' 

allOf wiederverwendet die example s von jedem Modell. Wenn beispielsweise die Basismodelle sind wie folgt definiert:

modelHeader: 
    type: object 
    properties: 
     id: 
     type: integer 
     example: 1 

    modelPayload: 
    type: object 
    properties: 
     name: 
     type: string 
     example: Alice 

mymodel bekommt dieses Beispiel:

{ 
    "id": 1, 
    "name": "Alice" 
} 

Swagger Editor - example for an allOf model

+0

Danke @Helen. Ich weiß nicht, warum Swagger-Editor keine Fehler für meine Verwendung von Elementen geworfen hat. Aber allOf arbeitet jetzt für mich. Danke für das Aufzeigen! Es hat vorher nicht funktioniert, vielleicht wegen einer irrelevanten Änderung :) – PeggyScott

Verwandte Themen