web-dev-qa-db-fra.com

Renvoyer un tableau d'objets dans Swaggerhub

Je définis une spécification API dans swaggerhub. La demande/contacts renvoie un tableau de contacts. La définition est ci-dessous:

/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 renvoie que le deuxième objet et non l'ensemble du tableau d'objets. J'utilise OpenAPI spec 2.0 et je pense que les tableaux ne sont pas bien pris en charge dans cette version

10
Krishna Adhikari

Un tableau d'objets est défini comme suit. La valeur de 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, Swagger UI affiche les exemples de tableau avec un seul élément, comme ceci:

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

Si vous souhaitez que l'exemple de tableau inclue plusieurs éléments, spécifiez le multi-élément example dans le 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
12
Helen