Swagger; geben Sie zwei Antworten mit dem gleichen code basiert auf optionale parameter
Diese Frage ist nicht duplizieren ( Swagger - Geben Sie Optional Objekt-Eigenschaft oder Mehrere Antworten ), weil, die OP wurde versucht, wieder ein 200 oder 400.
Ich habe eine GET
mit einem optionalen parameter; z.B. GET /endpoint?selector=foo
.
Möchte ich wieder ein 200, deren schema ist unterschiedlich, abhängig davon, ob der parameter übergeben wurde, z.B.:
GET /endpoint -> {200, schema_1}
GET /endpoint?selector=blah -> {200, schema_2}
In der yaml, habe ich versucht, mit zwei 200-codes, sondern der Zuschauer drückt Sie nieder, wie wenn ich nur eines angegeben.
Gibt es eine Möglichkeit, dies zu tun?
Edit: der folgende Zusammenhang: https://github.com/OAI/OpenAPI-Specification/issues/270
Du musst angemeldet sein, um einen Kommentar abzugeben.
Open API 3.0 können Sie
oneOf
zu definieren, die mehrere mögliche Anfrage stellen oder Resonanz-Körper für die gleiche operation:Jedoch es nicht möglich, die map-spezifische response-schemas spezifische parameter-Werte. Sie müssen dokumentieren diese Besonderheiten mündlich in der
description
von der response, operation und/oder parameter.Hier ist eine, die möglicherweise mit Erweiterung Anfrage:
Erlauben operationObject überlastung mit get-^ nach-^ etc
Hinweis für Swagger-UI-Nutzer: Als des Schreibens dieses Artikels (Dezember 2018) Swagger-UI nicht automatisch generieren Beispiele für
oneOf
undanyOf
schemas. Sie können Folgen Sie dieses Problem für updates.Als Problemumgehung können Sie eine Antwort
example
oderexamples
manuell. Beachten Sie, dass die Verwendung mehrererexamples
erfordern Swagger UI 3.23.0+ oder-Stolzieren-Editor 3.6.31+.examples
(plural) - Sie sind auch noch nicht implementiert. Unterstützung fürexamples
ist verfolgte hier.Wollte ich die gleiche Sache, und ich kam mit einem workaround zu funktionieren scheint:
Ich habe gerade definiert zwei unterschiedliche Wege:
Pfade arbeiten, die auf swagger-editor. Ich kann sogar Dokument jede option unterschiedlich und stellen optionale Parameter, die nur auf den zweiten Fall toguether, die den API-doc viel sauberer. Mit operationId Sie können zu generieren, Reiniger Namen für die generierte API-Methoden.
Ive posted die gleiche Lösung hier ( https://github.com/OAI/OpenAPI-Specification/issues/270 ), um zu überprüfen, wenn ich bin fehlt etwas mehr.
Ich verstehe es nicht explizit erlaubt/aufgefordert, es zu tun (weder fand ich einen Ort explizit verbieten es). Aber als workaround, und der einzige Weg, um Dokument eine API mit diesem Verhalten in der aktuellen Spezifikation, sieht aus wie eine option.
Zwei Probleme, die Ich habe herausgefunden mit:
fixieren Sie diese in den generierten code. Wahrscheinlich passiert es in anderen code
- Generatoren.
Wenn es diese nicht Blocker, die es zumindest ermöglichen, Sie zu dokumentieren ordnungsgemäß solchen Fällen und damit die Untersuchung mit swagger-editor.
parameters
. Es gibt bereits Vorschläge, damit query-strings in Pfade: Vorschlag: Querystring-Parameter in der Pfadangabe, Platz für legacy-APIs, indem query-Parameter in den Pfad