2017-02-03 5 views
0

zu spezifizieren? Ich habe eine existierende API die nicht ganz RESTful ist. Ich habe versucht, Swagger zu verwenden, um schnell einen Mock-Server zu erstellen, so dass ich die App testen kann, ohne auf den Server angewiesen zu sein. Als ich mit dem Schreiben der Yaml-Regeln begann, wurde mir klar, dass für eine Teilmenge von Routen derselbe Endpunkt verwendet wird und der Server den Body-JSON analysiert, um genau festzustellen, um was für eine Anfrage es sich handelt. Gibt es eine Möglichkeit, ein solches Verhalten mit Swagger zu modellieren?Ist es möglich Swagger Routes basierend auf dem body Parameter

(Bitte äußern Sie nicht auf die API-Architektur, es ist bereits vorhanden und in Produktionen und ich war in der Konstruktion nicht beteiligt)

Antwort

1

Nicht möglich zu definieren, mehrere Endpunkte/Verhaltensweisen, die die gleiche URL teilen.

Die swagger.yml geht davon aus, dass Sie eine RESTful API haben. Swagger definiert Verhalten und gültige Nutzdaten für jede Route und jede Route muss einen eindeutigen Pfad haben. Sie können mit Swagger nicht mehrere Routen über dieselbe URL darstellen, es sei denn, Sie würden alle zusammenführen und sie als generischen Endpunkt darstellen. Dies würde erfordern, dass Sie das Verhalten mithilfe der Dokumentation beschreiben und Sie würden viele Vorteile von swagger verlieren (eine angenehme Benutzeroberfläche und automatische Validierung). Wenn Sie für jede Route unterschiedliche Eingangsnutzlasten haben, müssten alle Felder in derselben Nutzlast definiert werden, und die Dokumentation würde beschreiben, welche Felder in jedem Szenario benötigt werden.

Wenn möglich, überlegen Sie, mehrere Endpunkte zu definieren und dann die Anforderungen an dieselbe Back-End-Einzelroute weiterzuleiten.

Verwandte Themen