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: []
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.
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.