2017-09-12 3 views
1

私はswaggerhubでAPI仕様を定義しています。/contacts要求は、連絡先の配列を返します。定義は以下の通りです:Swaggerhubにオブジェクトの配列を返します

/contacts:  
get: 
    tags: 
    - contacts 
    summary: Get all the contacts 
    description: This displays all the contacts present for the user. 
    operationId: getContact 
    produces: 
    - application/json 
    - application/xml 
    responses: 
    200: 
    description: successful operation 
    schema: 
     $ref: '#/definitions/AllContacts' 
    400: 
    description: Invalid id supplied 
    404: 
    description: Contact not found 
    500: 
    description: Server error 
definitions: 
    AllContacts: 
    type: array 
    items: 
    - $ref: '#/definitions/ContactModel1' 
    - $ref: '#/definitions/ContactModel2' 


    ContactModel1: 
    type: object 
    properties: 
     id: 
     type: integer 
     example: 1 
     firstName: 
     type: string 
     example: 'someValue' 
     lastName: 
     type: string 
     example: 'someValue' 

    ContactModel2: 
    type: object 
    properties: 
     id: 
     type: integer 
     example: 2 
     firstName: 
     type: string 
     example: 'someValue1' 
     lastName: 
     type: string 
     example: 'someValue1' 

何らかの理由で、何らかの理由で、オブジェクトの配列全体ではなく、2番目のオブジェクトのみを返します。私はOpenAPI仕様2.0を使用しており、配列がこのバージョンで十分にサポートされていないと思われます。

+0

すべての 'ContactModel'オブジェクトは同じフィールド名(名前、値ではない)を持っていますか?あるいは、彼らにはいくつかのフィールドがありますか? – Helen

+0

@Helenそれらはすべて同じフィールド名を持ちます:id、firstName、lastNameです。 –

答えて

1

オブジェクトの配列は次のように定義されています。 itemsの値は、配列項目を記述する単一のモデルでなければなりません。デフォルトでは

definitions: 
    AllContacts: 
    type: array 
    items: 
     $ref: '#/definitions/ContactModel' 

    ContactModel: 
    type: object 
    properties: 
     id: 
     type: integer 
     example: 1 
     firstName: 
     type: string 
     example: Sherlock 
     lastName: 
     type: string 
     example: Holmes 

、闊歩UIはそうのように、ただ一つのアイテムを持つ配列の例が表示されます。

[ 
    { 
    "id": 1, 
    "firstName": "Sherlock", 
    "lastName": "Holmes" 
    } 
] 

あなたが複数の項目が含まれるように、配列の一例をしたい場合は、マルチアイテムexampleを指定します配列モデル:

definitions: 
    AllContacts: 
    type: array 
    items: 
     $ref: '#/definitions/ContactModel1' 
    example: 
     - id: 1 
     firstName: Sherlock 
     lastName: Holmes 
     - id: 2 
     firstName: John 
     lastName: Watson 
+0

ありがとうございます。これは私にとって完璧に機能します。 –

関連する問題