Le service Web my REST) fonctionne avec la méthode GET et comporte deux paramètres facultatifs.
J'ai essayé de le définir dans Swagger mais j'ai rencontré une erreur, Définition de paramètre non valide, après avoir défini le required
comme false
.
J'ai découvert que si je définissais la valeur required
comme true
, l'erreur disparaîtrait. Voici un exemple de mon code Swagger.
...
paths:
'/get/{param1}/{param2}':
get:
...
parameters:
- name: param1
in: path
description: 'description regarding param1'
required: false
type: string
- name: param2
in: path
description: 'description regarding param2'
required: false
type: string
Je n'ai pas vécu cela avec des paramètres dans body ou ceux dans query. Je pense que ce problème est seulement lié aux paramètres dans le chemin. Je ne trouvais pas non plus de solution dans les fichiers de spécification Swagger.
Existe-t-il un autre moyen de définir des paramètres facultatifs dans Swagger ou ai-je une erreur dans mon code?
Toute aide serait appréciée.
Étant donné que ce paramètre de chemin doit être requis conformément à la spécification OpenAPI/Swagger, vous pouvez envisager d'ajouter 2 points de terminaison distincts avec les chemins suivants:
/get/{param1}/{param2}
lorsque param2 est fourni/get/{param1}/
lorsque param2 n'est pas fourniCela risque d’exploser car vous ne pouvez pas avoir de paramètre uri de base facultatif, mais uniquement des valeurs de chaîne de requête (dans le cas d’une url).
Par exemple:
Cela devrait fonctionner:
{
"in":"query",
"required":false
}
Cela ne devrait pas fonctionner
{
"in":"path",
"required":false
}
changez votre propriété "in" en "requête" au lieu de "chemin" et cela devrait fonctionner.
Votre YAML échoue car, comme indiqué dans le cahier des charges:
Détermine si ce paramètre est obligatoire. Si le paramètre est dans "path", cette propriété est obligatoire et sa valeur DOIT être true.
Source: http://swagger.io/specification/#parameterObject (Regardez dans la table des champs fixes )