Ich definiere eine API und ich habe ein Feld, das "Nutzlast" genannt wird. Wir hatten dieses Feld definiert alsLassen Sie ein Objekt OneOf einige Typen in Swagger haben
„Typ“: string
in unserer Prahlerei jedoch diese Nutzlast-Datenstruktur zu haben begonnen. Insbesondere sendet der Client JSON-Objekte als Nutzdaten, die in einigen Regeln beachtet werden müssen. Zum Beispiel könnte Nutzlast sein:
{
"bark": true,
"breed": "Dingo"
}
wenn die Nutzlast ein Dog-Objekt ist oder
{
"hunts": true,
"age": 13
}
wenn es ein Cat-Objekt ist.
So in der YAML-Datei Ich habe zunächst:
payload:
$ref: "#/definitions/payloaddata"
und im Bereich Definitionen ich habe:
payloaddata:
type: "object"
schema:
oneOf:
- $ref: '#/components/schemas/Cat'
- $ref: '#/components/schemas/Dog'
Die Komponenten werden wie folgt definiert:
components:
schemas:
Dog:
type: object
properties:
bark:
type: boolean
breed:
type: string
enum: [Dingo, Husky, Retriever, Shepherd]
Cat:
type: object
properties:
hunts:
type: boolean
age:
type: integer
jedoch die Yaml-Datei "kompiliert" nicht mit dieser Eingabe. Irgendwelche Ideen wie man das macht?
Ist Ihre Spezifikation OpenAPI/Swagger 2.0 oder OpenAPI 3.0? 'oneOf' wird nur in 3.0 unterstützt. – Helen
hinzugefügt swagger: "3.0" am Anfang der Datei. Ich arbeite an editor.swagger.io – cateof
Ist es irgendwie möglich, in 2.0 zu bleiben und einem Parameter zu erlauben, mehrere Typen als Wert zu haben? editor.swagger dot io unterstützt nicht "3.0" – cateof