Wir haben eine vollständig dockerisierte Web-App mit einer gültigen Swagger-Definition für die API. Die API wird in einem eigenen Andock-Container ausgeführt, und wir verwenden docker-compose, um alles zu orchestrieren. Ich möchte einen Ruby-Client basierend auf der Swagger-Definition erstellen, die sich unter http://api:8443/apidocs.json
befindet.
Ich habe die Dokumentation hier durchgelesen, die mich zu Swaggers öffentliches Docker-Image zum Generieren von Client- und Servercode. Leider fehlt die Dokumentation und es gibt keine Beispiele, wie man mit dem Docker Image tatsächlich einen Client erzeugen kann.
Die Dockerfile zeigt an, dass der Container einen Webdienst ausführt , was ich nur annehmen kann, ist die dockerisierte Version von Ссылка . Daher würde ich erwarten, einen Client mit dem folgenden Befehl generieren zu können:
curl -X POST -H "content-type:application/json" -d \
'{"swaggerUrl":"http://api:8443/apidocs"}' \
http://swagger-generator:8080/api/gen/clients/ruby
Kein Glück hier. Ich bekomme immer wieder "ungültige Swagger-Definition", obwohl ich bestätigt habe, dass die Swagger-Definition mit (npm -q install -g swagger-tools >/dev/null) && swagger-tools validate http://api:8443/apidocs
gültig ist.
Irgendwelche Ideen?
Sie sind in der Tat richtig, das Docker-Bild, auf das Sie sich beziehen, ist das gleiche Bild, das in Ссылка
verwendet wirdDas Problem, das Sie haben, ist, dass der Eingabeparameter nicht korrekt ist.
Um es richtig zu machen, beachten Sie bitte, dass der swagger-generator über eine Webschnittstelle verfügt. Also, sobald Sie es starten, wie die Anweisungen sagen, öffnen Sie es in einem Browser. Zum Beispiel (ersetzen Sie den GENERATOR_HOST durch die IP-Adresse Ihrer Maschine):
%Vor% Dann kannst du den swagger-ui auf http://192.168.99.100
Der wichtige Teil hier ist, dass Sie die Benutzeroberfläche verwenden können, um die Aufrufsyntax zu sehen. Wenn Sie einen Client generieren, gehen Sie zu http://192.168.99.100/#!/clients/generateClient
, wählen Sie die Sprache aus, die Sie generieren möchten, und klicken Sie auf die Nutzlast rechts. Ersetzen Sie das Feld swaggerUrl
durch die Adresse Ihres Servers und voila.
Sie können die Ausgabe in der Wellung verwenden, um herauszufinden, wie Sie von der Befehlszeile aus aufrufen. Es sollte von dort leicht sein.
Bitte beachten Sie, dass, nur weil ein Drittanbieter-Tool sagt, dass die Swagger-Definition gültig ist, nicht bedeutet, dass es tatsächlich ist. Ich denke nicht, dass das Ihr Problem ist, aber die Tool-Meilenzahl von Drittanbietern kann variieren ...
Tags und Links ruby docker swagger swagger-codegen