2017-07-09 6 views
0

Ich habe folgende Objektstruktur in meiner DatenbankSwagger und JSON-Patch

{ 
    partnerName: '24 Fitness', 
    supportedProducts: [ 
     'FitBit', 
     'Protein Powder' 
    ] 
}, 

, wo der Schlüsselwert supportedProducts kann von der Client-Seite geändert werden.

Ich konstruiere eine PATCH-API-Methode mithilfe von Swagger-Dokumentation, um die obige Funktionalität zu unterstützen. Aber ich bin mir der Patch-Objektdefinition nicht sicher, da die Dokumentation kein detailliertes Beispiel für die Erstellung eines PATCH bietet.

Die aktuelle Definition, die ich habe endet in Fehler bei der Ausführung und sieht aus wie folgend

"patch":{ 
    "description":"Update supported products for a partner", 
    "operationId":"Update supported products", 
    "parameters":[ 
     { 
     "name": "partnerName", 
     "in": "path", 
     "required": true, 
     "type": "string" 
     }, 
     { 
     "name": "supportedProducts", 
     "in": "body", 
     "required": true, 
     "schema":{ 
      "$ref":"#/definitions/PatchRequest" 
     } 
     } 
    ], 
    "responses":{ 
     "200":{ 
     "description": "product updated" 
     }, 
     "404":{ 
     "description": "Not Found" 
     } 
    } 

    "definitions": { 
    "PatchRequest":{ 
     "type": "object", 
     "required":[ 
     "partnerName", 
     "supportedProducts" 
     ], 
     "properties":{ 
     "partnerName":{"type": "string"}, 
     "supportedProducts":{ 
      "type": "array", 
      "items":{"type": "string"} 
     } 
     } 

    } 
    } 
+0

Welche Anfrage URL und Textkörper erwartet Ihr Server? – Helen

+0

@Helen-Anforderungs-URL ist/data/{partnerName} und body sollte den partnerName und supportedProducts als Wert erwarten. Aber in meinem Fall scheitert das, wenn ich versuche, den obigen JSON zu konfigurieren, bevor ich den Server ausführen und Anfragen stellen kann. – user8222014

+0

Ist das Ihre gesamte JSON-Definition oder nur Auszüge daraus? (Fragen, weil dieser Code allein kein gültiger JSON ist.) – Helen

Antwort

0

Aus diesem einfachen Fall ich ein JSON Patch-Objekt verwendet, würde die Operationen zu beschreiben auf dem Ziel zu machen. Hier ist ein eines JSON Patch Swagger API.

paths: 
    /users/{GUID}: 
    patch: 
     summary: Update a user 
     parameters: 
     - name: GUID 
      in: path 
      required: true 
      type: string 
      format: GUID 
      description: The GUID of a specific user 
     - name: JsonPatch 
      in: body 
      required: true 
      schema: 
      $ref: "#/definitions/PatchRequest" 
     responses: 
     '200': 
      description: Successful response 
      schema: 
      $ref: "#/definitions/User" 
definitions: 
    PatchRequest: 
    type: array 
    items: 
     $ref: "#/definitions/PatchDocument" 
    PatchDocument: 
    description: A JSONPatch document as defined by RFC 6902 
    required: 
    - "op" 
    - "path" 
    properties: 
    op: 
     type: string 
     description: The operation to be performed 
     enum: 
     - "add" 
     - "remove" 
     - "replace" 
     - "move" 
     - "copy" 
     - "test" 
    path: 
     type: string 
     description: A JSON-Pointer 
    value: 
     type: object 
     description: The value to be used within the operations. 
    from: 
     type: string 
     description: A string containing a JSON Pointer value. 
Verwandte Themen