web-dev-qa-db-fra.com

SwaggerUI / YAML - ne doit PAS avoir de propriétés supplémentaires additionalProperty: requestBody

Conception d'une API à l'aide de editor.swagger.io Je ne parviens pas à ajouter un attribut requestBody, obtenant une erreur que je ne peux pas résoudre:

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

Je ne comprends pas ce que je fais mal, surtout après avoir regardé la documentation requestBody . La recherche ne m'a rien apporté d'autre que la tendance des erreurs à induire en erreur.

EDIT: D'après ce que les réponses ici ont montré, il semble que l'éditeur est censé utiliser OpenAPI 2.0, mais attend en fait 3.0 tout en renvoyant des erreurs pour les deux. J'utiliserais de l'aide sur quoi utiliser, étant donné que j'ai inclus un

swagger: "2.0"

ligne au début du document. Lors des tests avec openapi: 3.0.0 comme l'a montré @Mike dans sa réponse, je reçois juste plus d'erreurs sur les propriétés supplémentaires autorisées.

Voici ce qui génère l'erreur, la ligne 91 étant 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

J'ai obtenu des clarifications d'une source externe, alors voici ce que j'ai appris:

En précisant swagger: 2.0 signifie également que OpenAPI Specification 2.0. est attendu par l'éditeur, alors que je pensais qu'il utilisait OAS 3. Je ne sais toujours pas pourquoi in: body n'a pas fonctionné en premier lieu, mais j'ai ajouté des guillemets autour de "body", ce qui a fait disparaître l'erreur. Ensuite, j'ai essayé de supprimer les citations et cela a bien fonctionné.

L'éditeur ne semble pas très fiable en matière de rapport d'erreurs.

13
ilomax

Ce message d'erreur semblait familier. Essayez d'insérer un schéma: sous la ligne required: de votre paramètre, puis indentez le type: et le format: lines.

Puisque je n'ai pas encore configuré mon propre serveur SwaggerUI. J'ai pris votre extrait de code et l'ai collé dans SwaggerHub. Ensuite, j'ai supprimé les lignes $ ref: juste pour simplifier davantage la base de code. Voici une capture d'écran du résultat sans erreur. enter image description here

2
Mike