SwaggerhubでAPI仕様を定義しています。/contactsリクエストは、連絡先の配列を返します。定義は以下のとおりです。
/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を使用していますが、このバージョンでは配列が十分にサポートされていないようです。
オブジェクトの配列は次のように定義されます。 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
デフォルトでは、Swagger UIは次のように1つのアイテムのみで配列の例を表示します。
[
{
"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