2017-08-30 2 views
1

Zum Beispiel so etwas, aber im Körperteil.Kann ich etwas tun, was mir die Wahl zwischen Struktur1 oder Struktur wie in enum geben wird. Hier ist auch meine Struktur und Struktur1.Wir haben etwas wie Selektor oder jedes Mal, wenn ich neu erstellen sollte POST oder PUT für jede Struktur? Vielleicht gibt es einen anderen Weg, mit zu tun, wenn? Haben wir wenn in Swagger?Ist es möglich, Differenzkörper zu erstellen und während der Operation auszuwählen, welche ich möchte?

openapi: 3.0.0 
servers: 
    - url: 'http://petstore.swagger.io/v2' 
x-origin: 
    - url: 'http://petstore.swagger.io/v2/swagger.json' 
    format: swagger 
    version: '2.0' 
    converter: 
     url: 'https://github.com/mermade/swagger2openapi' 
     version: 2.2.0 
info: 
    description: 'This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.' 
    version: 1.0.0 
    title: Swagger Petstore 
    termsOfService: 'http://swagger.io/terms/' 
    contact: 
    email: [email protected] 
    license: 
    name: Apache 2.0 
    url: 'http://www.apache.org/licenses/LICENSE-2.0.html' 
tags: 
    - name: pet 
    description: Everything about your Pets 
    externalDocs: 
     description: Find out more 
     url: 'http://swagger.io' 
    - name: store 
    description: Access to Petstore orders 
    - name: user 
    description: Operations about user 
    externalDocs: 
     description: Find out more about our store 
     url: 'http://swagger.io' 
paths: 
    /something: 
    post: 
     requestBody: 
     required: true 
     content: 
      application/json: 
      schema: 
       oneOf: 
       - $ref: '#/components/schemas/Dog' 
       - $ref: '#/components/schemas/Cat' 
     responses: 
      '200': 
      description: Updated   
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 
+0

Ich habe von OneOf gehört, aber in Swagger 2.0 unterstützt es nicht – Dima

+0

Können Sie Körper Beispiele hinzufügen, die Sie als Alternativen verwenden möchten? – Helen

+0

Danke für die Antwort. Ich habe es hinzugefügt. – Dima

Antwort

1

Alternative Schemata für die Anforderung Körper kann mit oneOf definiert werden, aber es ist nur in OpenAPI 3.0 und nicht in OpenAPI/Swagger 2.0 unterstützt.

In OpenAPI/Swagger 2.0, die Sie tun können, ist ein Freiform-Objektkörper zu verwenden, die beliebige Eigenschaften erlaubt:

- in: body 
    name: body 
    description: Add what do you wnat to add 
    required: true 
    schema: 
    type: object 

In OpenAPI 3.0 können Sie oneOf wie folgt verwenden:

paths: 
    /something: 
    post: 
     requestBody: 
     required: true 
     content: 
      application/json: 
      schema: 
       oneOf: 
       - $ref: '#/components/schemas/Structure' 
       - $ref: '#/components/schemas/Structure1' 
     responses: 
     ... 

# "definitions" were replaced with "components.schemas" 
components: 
    schemas: 
    Structure: 
     ... 
    Structure1: 
     ... 
+1

Ja genau, ich wollte etwas wie das in 2.0 aber es ist nicht möglich, dann werde ich anfangen, 3.0 zu verwenden. Danke – Dima

+0

Ich habe es getan, aber es funktioniert nicht.Wenn ich alles schreibe, ist es woking aber mit oneOf no kannst du es dir bitte anschauen und es gibt keine Fehler – Dima

Verwandte Themen