Open API: was schema zu akzeptieren (Komplex) JSON-Wert

API, für die ich Schreibe, ein Stolzieren-2.0-Spezifikation ist im Grunde ein Shop für JSON-Wert.

Ich soll einen Pfad, den Wert Lesen und einen Pfad zu speichern, JSON values (null, Zahl, integer, string, object, array) von nicht vordefinierten Tiefe.

Leider, es scheint, dass Swagger 2.0 ist ziemlich streng auf schemas für die Eingabe und Ausgabe und nicht zulassen, dass die ganze Reihe von Schemata erlaubt JSON-Schema. Fors-editor nicht zulässt, dass beispielsweise gemischt-Werte (zum Beispiel eine Eigenschaft, die kann entweder ein boolescher Wert oder eine Ganzzahl) oder lose definierten arrays (der Typ der Elemente muß genau definiert) und Objekte.

Ich versuche also eine Abhilfe durch das definieren einer MixedValue schema:

---
swagger: '2.0'
info:
  version: 0.0.1
  title: Data store API
consumes:
- application/json
produces:
- application/json
paths:
  /attributes/{attrId}/value:
    parameters:
    - name: attrId
      in: path
      type: string
      required: true
    get:
      responses:
        '200':
          description: Successful.
          schema:
            $ref: '#/definitions/MixedValue'
    put:
      parameters:
      - name: value
        in: body
        required: true
        schema:
          $ref: '#/definitions/MixedValue'
      responses:
      responses:
        '201':
          description: Successful.
definitions:
  MixedValue:
    type: object
    properties:
      type:
        type: string
        enum:
        - 'null'
        - boolean
        - number
        - integer
        - string
        - object
        - array
      boolean:
        type: boolean
      number:
        type: number
      integer:
        type: integer
      string:
        type: string
      object:
        description: deep JSON object
        type: object
        additionalProperties: true
      array:
        description: deep JSON array
        type: array
    required:
    - type

Aber Fors-Editor weigert sich, die lose definiert object und array Eigenschaften.

Fragen:
- Gibt es eine Möglichkeit, um dieses Problem zu umgehen?
- Ist es nur ein Stolzieren-Editor-bug oder eine starke Begrenzung der Swagger 2.0 spec?
- Gibt es eine bessere Möglichkeit (best-practice), um anzugeben, was ich brauche?
- Kann ich erwarten, dass einige Einschränkungen in der code produziert von swagger für einige Sprachen mit meine API spec?

InformationsquelleAutor dolmen | 2015-09-29
Schreibe einen Kommentar