In meinem REST Webdienst, der mit der GET-Methode arbeitet, gibt es eine Funktion, die zwei optionale Parameter hat.
Ich habe versucht, es in Swagger zu definieren, aber ich bin auf einen Fehler gestoßen, Keine gültige Parameterdefinition, nachdem ich required
als false
festgelegt habe.
Ich fand heraus, dass, wenn ich den Wert von required
auf true
setze, der Fehler verschwunden ist. Hier ist ein Beispiel meines Swagger-Codes.
...
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
Ich habe dies nicht mit Parametern in body oder den Parametern in query erlebt. Ich denke, dieses Problem hängt nur mit Parametern im Pfad zusammen. Ich konnte auch keine Lösung in Swagger-Spezifikationsdateien finden.
Gibt es eine andere Möglichkeit, optionale Parameter in Swagger zu definieren, oder habe ich einen Fehler in meinem Code?
Jede Hilfe wäre dankbar.
Da der Pfadparameter gemäß der Spezifikation OpenAPI/Swagger erforderlich sein muss, können Sie 2 separate Endpunkte mit den folgenden Pfaden hinzufügen:
/get/{param1}/{param2}
wenn param2 angegeben ist/get/{param1}/
wenn param2 nicht angegeben istEs wird wahrscheinlich explodieren, weil Sie keinen optionalen Basis-URI-Parameter haben können, sondern nur Zeichenfolgenwerte abfragen (im Fall einer URL).
Beispielsweise:
Das sollte funktionieren:
{
"in":"query",
"required":false
}
Das sollte nicht funktionieren
{
"in":"path",
"required":false
}
ändern Sie die Eigenschaft "in" in "query" anstelle von "path" und es sollte funktionieren.
Ihr YAML schlägt fehl, weil wie in der Spezifikation angegeben:
Legt fest, ob dieser Parameter obligatorisch ist. Wenn sich der Parameter in "path" befindet, ist diese Eigenschaft erforderlich und der Wert MUSS "true" sein.
Quelle: http://swagger.io/specification/#parameterObject (In festen Feldern suchen Tabelle)