web-dev-qa-db-ja.com

属性の1つとして配列を含むswaggerのオブジェクト定義の例を提供する方法

以下の例を参照して、その定義にNamedElementArrayの例を示したいと思います。これには、NamedElement属性のelementsの配列の例を示す必要があります。

それ、どうやったら出来るの?これを行う方法の詳細は、swagger仕様にありません。

swagger: '2.0'

info:
  version: "0.0.0"
  title: Example

definitions:
  Identifier:
    type: string
    format: uuid
  NamedElement:
    type: object
    properties:
      name:
        type: string
      identifier:
        $ref: "#/definitions/Identifier"
    required:
    - name
    - identifier
    example:
      name: Identifier1
      identifier: ab804529-11d0-4781-a49a-3bbbc40243df
  NamedElementArray:
    type: object
    properties:
      name: 
        type: string
      elements:
        type: array
        minLength: 0
        items:
          $ref: "#/definitions/NamedElement"
    required:
    - name
    - elements
    example:
      name: Fred
      elements:

paths:
  /elements/{name}:
    get:
      description: |
        Gets `NamedElement` objects, based on the **name** query param.
      parameters:
        -
          name: name
          in: path
          description: Name of element array to return
          required: true
          type: string
      responses:
        200:
          description: Returns a named element array
          schema:
            $ref: "#/definitions/NamedElementArray"
        default:
          description: Return nothing
9
Geoff

高レベルの例と低レベルの例から選択する必要があります。 Swagger UIでは、高レベルの例がローカルの例に先行します。

完全な例は Swagger Hubで利用可能

各プロパティ(低レベル)で例を定義できます。

Identifier:
    type: string
    format: uuid
    example: Local UUID example

NamedElement:
    type: object
    properties:
        name:
            type: string
            example: Local identifier example
        identifier:
            $ref: "#/definitions/Identifier"
        required:
            - name
            - identifier

NamedElementArray:
    type: object
    properties:
      name: 
          type: string
          example: Local name example
      elements:
          type: array
          minLength: 0
          items:
              $ref: "#/definitions/NamedElement"
    required:
        - name
        - elements

その場合、SwaggerUIの例は次のようになります。

{
  "name": "Local name example",
  "elements": [
    {
      "name": "Local identifier example",
      "identifier": "Local UUID example"
    }
  ]
}

ただし、NamedElementの例で行ったように、高レベルで完全な例を示すこともできます。

NamedElementArray:
    type: object
    properties:
        name: 
            type: string
        elements:
            type: array
            minLength: 0
            items:
                $ref: "#/definitions/NamedElement"
    required:
        - name
        - elements
    example:
        name: Fred
        elements:
            - name: Identifier1
              identifier: ab804529-11d0-4781-a49a-3bbbc40243df
            - name: Identifier2
              identifier: zzz4529-11d0-4781-a49a-3bbbc40243df

その場合、SwaggerUIの例は次のようになります。

{
  "name": "Fred",
  "elements": [
    {
      "name": "Identifier1",
      "identifier": "ab804529-11d0-4781-a49a-3bbbc40243df"
    },
    {
      "name": "Identifier2",
      "identifier": "zzz4529-11d0-4781-a49a-3bbbc40243df"
    }
  ]
}
9
Arnaud Lauret