2017-10-06 2 views
3

Ich habe Swagger UI für API-Dokumentation, verwende ich den gleichen Ansatz wie in official specification für sie Zugriff auf I nächste URL:Wiedergabe Swagger UI url alias

http://localhost:9000/docs/swagger-ui/index.html?url=/assets/swagger.json 

Aber ich will http://localhost:9000/docs/ stattdessen verwenden. Ich werde nicht WS für die Übertragung verwendet werden soll, würde Ich mag in routes einzelne Zeile verwenden, wie folgt aus:

GET /docs controllers.Assets.at(path:String="/public/lib/swagger-ui", file:String="index.html?url=/assets/swagger.json") 

Oder

GET /docs controllers.Assets.at(path:String="/public/lib/swagger-ui", file:String="index.html") 

und http://localhost:9000/docs?url=/assets/swagger.json

Was shold ich so ändern es funktioniert?

Antwort

1

Sie nicht Kürze in Routendatei für die URL /docs/swagger-ui/index.html?url=/assets/swagger.json weil index.html erzeugt wird durch swagger-ui plugin-public Verzeichnis und Zube erfordert machen ss zu Dateien in der Nähe (wie js und CSS-Dateien). Play swagger-ui verwendet javascript zum Abrufen json basierte Beschreibung Ihrer Routen über URL-Parameter für die weitere Analyse dieses Dokuments zu swagger-ui, in Ihrem Fall ist es /assets/swagger.json Endpunkt.

Ich habe versucht, die Zuordnung Swaggers index.html Datei zu machen, passieren so json Lage wie URL parameter direkt:

GET  /swagger-ui   controllers.Assets.at(path = "/public/lib/swagger-ui", file = "index.html") 

Wiedergabe diese Seite nicht machen konnte, und wurde CSS gefunden. Ich hängten Dummy-Mapping auf jede Datei in Standardverzeichnis des Prahlerei /public/lib/swagger-ui:

GET  /*file    controllers.Assets.at(path = "/public/lib/swagger-ui", file) 

Auch nach diesem Spiel nicht richtig index.html machen könnte.

0

Wie kann es ohne Wiedergabe-Swagger gelöst werden:

  1. Verzeichnis Prahlerei public \ erstellen in Ihrem Projekt;
  2. Laden Sie alle Dateien von https://github.com/swagger-api/swagger-ui/tree/master/dist herunter und kopieren Sie sie in public \ swagger;
  3. Kopieren Sie Ihre swagger.json (Spezifikation, richtig?) Zu public \ Spezifikation;
  4. in Ihre Routen Datei nächste Zeile:

GET/docs
controllers.Assets.versioned (path = "/ public/Spezifikationen" file: Asset- = „swagger.json „)

+0

meine 'swagger.json' stammt aus dem Endpunkt /assets/swagger.json – pacman

+0

Und ich möchte es mit Play-Swagger lösen, brauche ich nicht native Swagger-API – pacman

+0

@pacman, hab es, aber was ist der Vorteil, es mit Play-Swagger, nicht native Swagger-API zu lösen? –