2015-07-13 5 views
27

Ich habe eine POST-Anfrage, die den folgenden JSON-Anfragetext verwendet. Wie kann ich diesen Anfragetext mit OpenAPI (Swagger) beschreiben?Wie beschreibt man diesen POST JSON-Anfragetext in OpenAPI (Swagger)?

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

Bisher habe ich versucht, die folgenden, aber ich bin fest um den Körper schema zu definieren.

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" 
      } 

Ich möchte den Eingabe-Body inline als Beispiel für die Dokumentation definieren.

Antwort

25

ich habe es arbeiten mit:

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 
3

Die beste Möglichkeit, einen mehrzeiligen Skalar in YAML einzufügen, ist die Verwendung der block literal style. Hierfür müssen Sie Ihr JSON Beispiel durch die Verwendung Einbuchtung nur ändern (die entfernt werden, wenn Sie den Wert für den Schlüssel abrufen):

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

(aus Gründen der Übersichtlichkeit können Sie ein zusätzliches Newline oder zwei vor dem paths Skalar Schlüssel setzen ., sie clipped by default auf den wörtlichen Block Stil Skalare bekommen

+0

Nun, wenn ich die json in Anforderungstext kopieren, während die Anforderung sendet es eine Menge \ t und \ n anhängt zu Mein JSON-Objekt Wie schicke ich einen sauberen JSON nach hinten Ende – Gaurav

Verwandte Themen