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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen beliebigen Typ-schema wie folgt definiert:
oder wenn Sie möchten, eine
description
:Ohne eine definierte
type
,AnyValue
kann alles sein - string, number, boolean, array, object usw. Sehen dieses Q&A für weitere Informationen, wietype
-weniger schemas.In der Open API 3.0, die Sie hinzufügen können
nullable: true
zu ermöglichen, dienull
Wert:Hier ist, wie Swagger Editor 2.0 Griffe parameter body mit der
AnyValue
schema:Ich weiß nicht, wie code-Generatoren behandeln, obwohl dies.
AnyJSON
Dokumentation im meine Skillung.Vielleicht ist das, was Ihr suchen "Gemusterte Objekte":
Feld Muster: ^x-
Typ: Alle
Beschreibung: Erlaubt Erweiterungen Fors-Schema. Das Feld name MUSS beginnen mit x-, zum Beispiel, x-interne-id. Der Wert kann null sein, ein primitiver, ein array oder ein Objekt. Siehe Erweiterungen des Herstellers für weitere details.
Quelle: https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md
x-
) sind in der spec, nur um alles, was Sie wollen. Aber die meisten code-Generatoren und doc-Generatoren wird Sie nicht erkennen. Mit vendor-extensions ist nur Gabelung Fors spec und erfordert forking-Generatoren, so dass diese reduziert den Vorteil der Verwendung von Swagger. Aber das, was ich ulitmately tun, da es keine rein-Swagger-Lösung.