2017-09-12 3 views
1

Je définis une spécification d'API dans swaggerhub. La demande/contacts renvoie un tableau de contacts. La définition est la suivante:Retourne un tableau d'objet dans 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' 

Pour une raison quelconque, il ne retourne que le deuxième objet non la totalité du tableau d'objets. J'utilise OpenAPI spec 2.0 et je suspecte que les tableaux ne sont pas bien supportés dans cette version

+0

Tous les objets 'ContactModel' ont-ils les mêmes noms de champs (noms, et non valeurs)? Ou ont-ils des champs différents? – Helen

+0

@Helen Tous ont le même nom de champ qui sont: id, firstName et lastName. –

Répondre

1

Un tableau d'objets est défini comme suit. La valeur items doit être un modèle unique qui décrit les éléments du tableau.

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 

Par défaut, l'interface utilisateur Swagger affiche les exemples de tableau avec un seul élément, comme ceci:

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

Si vous voulez l'exemple de tableau pour inclure plusieurs éléments, indiquez le multi-élément example dans la modèle de tableau:

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

Merci. Cela fonctionne parfaitement pour moi. –