Comment décrire ce corps de requête POST JSON dans OpenAPI (Swagger)?

j'ai une requête POST qui utilise le corps de requête JSON suivant. Comment puis-je décrire ce corps de requête en utilisant OpenAPI (Swagger)?

{
    "testapi": {
        "testapiContext": {
            "messageId": "kkkk8",
            "messageDateTime": "2014-08-17T14:07:30+0530"
        },
        "testapiBody": {
            "cameraServiceRq": {
                "osType": "android",
                "deviceType": "samsung555"
            }
        }
    }
}

Jusqu'à présent j'ai essayé ce qui suit, mais je suis coincé à définir le corps schema.

swagger: "2.0"
info:
  version: 1.0.0
  title: get camera
  license:
    name: MIT
host: localhost
basePath: /test/service
schemes:
  - http
consumes:
  - application/json
produces:
  - application/json
paths:
  /getCameraParameters:
    post:
      summary: Create new parameters
      operationId: createnew
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      parameters:
        - name: pet
          in: body
          description: The pet JSON you want to post
          schema:  # <--- What do I write here?

          required: true
      responses: 
        200: 
          description: "200 response"
          examples: 
            application/json: 
             {
               "status": "Success"
             }

je veux définir le corps d'entrée en ligne, comme un échantillon pour la documentation.

32
demandé sur Helen 2015-07-13 21:30:20

2 réponses

je l'ai fait travailler avec:

    post:
      consumes:
        - application/json
      produces:
        - application/json
        - text/xml
        - text/html
      parameters:
        - name: body
          in: body
          required: true
          schema:
            # Body schema with atomic property examples
            type: object
            properties:
              testapi:
                type: object
                properties:
                  messageId:
                    type: string
                    example: kkkk8
                  messageDateTime:
                    type: string
                    example: '2014-08-17T14:07:30+0530'
              testapiBody:
                type: object
                properties:
                  cameraServiceRq:
                    type: object
                    properties:
                      osType:
                        type: string
                        example: android
                      deviceType:
                        type: string
                        example: samsung555
            # Alternatively, we can use a schema-level example
            example:
              testapi:
                testapiContext:
                  messageId: kkkk8
                  messageDateTime: '2014-08-17T14:07:30+0530'
                testapiBody:
                  cameraServiceRq:
                    osType: android
                    deviceType: samsung555
29
répondu Anirban Sen Chowdhary 2017-12-14 21:11:16

la façon la plus lisible d'inclure un scalaire multi-lignes dans YAML est d'utiliser le bloc littérale de style. Cela nécessite que vous changiez votre exemple JSON uniquement en utilisant l'indentation (qui sera supprimée si vous récupérez la valeur pour la clé):

.
.
produces:
  - application/json
example: |
  {
      "testapi": {
          "testapiContext": {
              "messageId": "kkkk8",
              "messageDateTime": "2014-08-17T14:07:30+0530"
     },
          "testapiBody": {
              "cameraServiceRq": {
                  "osType": "android",
                  "deviceType": "samsung555"
              }
          }
      }
  }
paths:
  /getCameraParameters:
.
.

(pour plus de clarté, vous pouvez ajouter une nouvelle ligne ou deux avant le paths scalaire clé, ils obtiennent coupé par défaut sur les scalaires de style bloc littéral.

3
répondu Anthon 2015-07-14 06:10:12