2017-12-11 25 views
0

httpリクエストからの応答は、次の形式で取得されます。名前のない配列とオブジェクトの配列です。私はこのケースのための適切なSwagger(Open API)仕様を理解できません。名前のないオブジェクトの配列を使ってswagger/open APIレスポンスを作成する

[ 
    [ 
    { 
     "prop1": "hello", 
     "prop2": "hello again" 
    }, 
    { 
     "prop1": "bye", 
     "prop2": "bye again" 
    } 
    ], 
    { 
    "key": 123 
    } 
] 
+0

可能な重複(https://stackoverflow.com/questions/38690802/how-to-create-different-element-types-within-swagger- [闊歩2.0エディタ内の異なる要素タイプを作成する方法] 2-0-editor)と[モデルレスポンス(さまざまなオブジェクトタイプの配列を含む)](https://stackoverflow.com/q/41129403/113116)を参照してください。 – Helen

答えて

-1

私は方法を見つけ、感謝:

"responses": { 
     "200": { 
     "description": "success", 
     "schema": { 
      "type": "array", 
      "items": [{ 
      "type": "array", 
      "items": { 
       "type": "object", 
       "properties": { 
       "prop1": { 
        "type": "string", 
       }, 
       "prop2": { 
        "type": "string", 
       } 
       } 
      } 
      }, 
      { 
      "type": "object", 
      "properties": { 
       "key": { 
       "type": "number" 
       } 
      } 
      }] 
     } 
     } 
    } 
    } 
+0

'items'は配列ではなく単一の型を必要とするため、この定義は無効です。 – Helen

1

答えは、あなたが使用OpenAPIののどのバージョンによって異なります。それは、配列項目に複数のスキーマを定義することが可能ですので

OpenAPIの3.0は、oneOfをサポートしています。

openapi: 3.0.0 
... 

paths: 
    /something: 
    get: 
     responses: 
     '200': 
      description: success 
      content: 
      application/json: 
       schema: 
       type: array 
       items: 
        oneOf: # <--------- 
        - type: array 
         items: 
         type: object 
         properties: 
          prop1: 
          type: string 
          prop2: 
          type: string 
        - type: object 
         properties: 
         key: 
          type: integer 
         required: 
         - key 

OpenAPIの2.0oneOfまたは混合タイプをサポートしていません。あなたができることは、typeless schemaを使用することです。つまり、配列項目はオブジェクト、配列、またはプリミティブなんて何でもかまいませんが、正確な型は指定できません。

swagger: '2.0' 
... 
paths: 
    /: 
    get: 
     produces: 
     - application/json 
     responses: 
     '200': 
      description: success 
      schema: 
      type: array 
      items: {} # <--------- 

      # Example to display in Swagger UI: 
      example: 
       - - prop1: hello 
        prop2: hello again 
       - prop1: bye 
        prop2: bye again 
       - key: 123 
関連する問題