web-dev-qa-db-de.com

SwaggerUI / YAML - sollte KEINE zusätzlichen Eigenschaften haben additionalProperty: requestBody

Entwerfen einer API mit editor.swagger.io Ich kann kein requestBody-Attribut hinzufügen und erhalte einen Fehler, den ich nicht beheben kann:

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, besonders nachdem ich mir requestBody documentation angesehen habe. Die Forschung hat mir nichts anderes gebracht als die Tendenz, dass Fehler irreführend sind.

BEARBEITEN: Nach den Antworten hier sieht es so aus, als ob der Editor OpenAPI 2.0 verwenden soll, erwartet aber tatsächlich 3.0 und gibt Fehler für beide zurück. Ich würde etwas Hilfe für die Verwendung verwenden, vorausgesetzt, ich habe ein

swagger: "2.0"

zeile am Anfang des Dokuments. Während des Testens 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 post:.

/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: []
8
ilomax

Ich habe Erläuterungen von einer externen Quelle erhalten, daher habe ich Folgendes gelernt:

Das Angeben von swagger: 2.0 Bedeutet auch, dass das OpenAPI-Spezifikation 2.0. vom Editor erwartet wird, während ich dachte, dass es OAS 3 verwendet. Ich bin mir immer noch nicht sicher, warum in: body hat nicht funktioniert, aber ich habe Anführungszeichen um "body" hinzugefügt, wodurch der Fehler verschwunden ist. Dann habe ich versucht, die Anführungszeichen zu entfernen, und es hat gut funktioniert.

Der Editor scheint in Bezug auf die Fehlerberichterstattung nicht sehr zuverlässig zu sein.

13
ilomax

Diese Fehlermeldung kam mir bekannt vor. Versuchen Sie, ein Schema: unter die erforderliche Zeile Ihres Parameters einzufügen, und rücken Sie dann die Zeilen type: und format: ein.

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

2
Mike