2017-12-04 1 views
2

Entwerfen einer API editor.swagger.io finde ich mich nicht in der Lage ein requestBody Attribut hinzufügen, erhalte eine Fehlermeldung kann ich nicht ansprechen:SwaggerUI/YAML - sollten nicht zusätzliche Eigenschaften additionalProperty haben: requestBody

Schema error at paths['/projects/{projectId}/user'].post 
should NOT have additional properties 
additionalProperty: requestBody 
Jump to line 91 

Ich verstehe nicht, was ich falsch mache, vor allem nach dem Blick auf die requestBody documentation. Die Forschung hat mir nichts anderes gebracht als die Tendenz zu Fehlern, die irreführend sind.

EDIT: Von was die Antworten hier gezeigt haben, sieht es so aus, als ob der Editor OpenAPI 2.0 verwenden soll, aber tatsächlich 3.0 erwartet, während Fehler für beide zurückgegeben werden. Ich würde etwas Hilfe verwenden, was zu verwenden, da ich eine Zeile am Anfang des Dokuments enthalten habe. Beim Testen mit openapi: 3.0.0, wie von @Mike in seiner Antwort gezeigt, bekomme ich nur mehr Fehler über erlaubte zusätzliche Eigenschaften.

Hier ist, was den Fehler erzeugt, Zeile 91 ist .

/projects/{projectId}/user: 
     post: 
     tags: 
     - projects 
     summary: Modify project user. 
     operationId: modifyProjectUser 
     parameters: 
     - name: projectId 
      in: path 
      description: ID of the project 
      required: true 
      type: integer 
      format: int32 
     requestBody: 
      content: 
      application/json: 
       schema: 
       $ref: '#/definitions/User' 
     responses: 
      "200": 
      description: Successful operation 
      schema: 
       type: array 
       items: 
       $ref: "#/definitions/User" 
     security: 
     - api_key: [] 
+1

Auf welcher Version von OpenAPI basiert es? Der von Ihnen bereitgestellte Dokumentationslink besagt, dass für OpenAPI v2 requestBody nicht unterstützt wird und dass es body- und formData-Parameter verwendet. (siehe hier zum Beispiel: https://swagger.io/docs/specification/2-0/describing-request-body/). Können Sie überprüfen, welche Version Sie verwenden/die editor.swagger.io verwendet? – refreshfr

+0

Sie mischen 2.0 und 3.0 Syntax. Die 2.0 Spezifikationen nutzen 'swagger: '2.0'', 3.0 Spezifikationen verwenden' openapi: 3.0.0'. – Helen

+0

@refreshfr Wie in https://swagger.io/specification/ angegeben, verwendet Swagger 2.0 OAS 3.0 und macht 'requestBody' somit nutzbar. Wenn ich versuche, 'in: body' zu verwenden, erhalte ich den folgenden Fehler: ** allowedValues: header, formData, query, path **. – ilomax

Antwort

3

Ich habe Erklärungen von einer externen Quelle, also hier ist was ich gelernt habe:

Angeben swagger: 2.0 bedeutet auch, dass die OpenAPI Specification 2.0.0 vom Herausgeber erwartet, während ich dachte, es verwendet OAS 3. I‘ Ich bin immer noch nicht sicher, warum in: body nicht in erster Linie funktioniert, aber ich habe Zitate um "body" hinzugefügt, die den Fehler verschwinden ließ. Dann habe ich versucht, die Zitate zu entfernen und es hat gut funktioniert.

Der Editor scheint nicht sehr zuverlässig, wenn es um die Fehlerberichterstattung geht.

0

Diese Fehlermeldung kam mir bekannt vor. Versuchen Sie, ein Schema einzufügen: Unter der Zeile "Erforderlich:" Ihres Parameters und dann den Typ: und format: Zeilen einrücken.

Da habe ich noch keinen eigenen SwaggerUI Server eingerichtet. Ich habe Ihr Code-Snippet genommen und es in SwaggerHub eingefügt. Dann habe ich die $ ref: Zeilen entfernt, nur um die Codebasis weiter zu vereinfachen. Hier ist ein Screenshot des fehlerfreien Ergebnisses. enter image description here

+0

Behebt das Obige dein Problem? – Mike

+0

Das hat nicht wirklich geholfen. Es zeigt tatsächlich mehr Fehler. Wenn es Ihnen nichts ausmacht, [diesen Screenshot] zu betrachten (https://i.gyazo.com/fdc8646e0705ad535c899bbcf249e92d.png), sehen Sie den gesamten Block sowie die genauen Fehler. – ilomax

+0

Sollte die $ ref: on line 109 nicht eingerückt sein? ... – Mike

Verwandte Themen