2017-08-30 37 views
1

例如类似的东西,但在身体的一部分。我可以做一些事情,让我选择之间的结构1或结构像枚举。这里也是我的结构和结构。我们有类似的选择器或每次我应该创建新的POST或PUT的每一个结构?可能还有另一种方式与如果?我们有,如果在招摇的?是否可以创建不同的身体并在操作过程中选择我想要的身体?

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

我听说过oneOf,但在swagger 2.0中不支持它 – Dima

+0

你可以添加你想用作替代品的身体示例吗? – Helen

+0

谢谢你的回答。我补充说。 – Dima

回答

1

用于请求体替代模式可以使用oneOf来定义,但它仅在所述OpenAPI 3.0且不在所述OpenAPI /扬鞭2.0支持。

在所述OpenAPI /扬鞭2.0,最可以做的是使用自由形式的对象体,其允许任意属性:

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

在OpenAPI的3.0,则可以使用oneOf这样的:

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

是的,我想在2.0的东西,但它是不可能的,那么我会开始使用3.0.Thanks – Dima

+0

我做到了,但它不工作。当我写allOf它是开玩笑,但只有一个,你可以看看吗?它不会给出任何错误 – Dima