2016-05-13 9 views
0

Ich habe Swagger in meinem Spring MVC Projekt konfiguriert.Änderung Swagger Basispfad im Frühjahr mvc Projekt

In web.xml ich habe /rest/* für servlet-mapping verwendet:

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

I Prahlerei api-doc mit URL unten zugreifen kann und alles ist in Ordnung:

http://localhost:8080/rest/v2/api-docs 

Aber problem ist Zugriff auf api mit Swagger-ul. Swagger verwendet http://localhost:8080/ (in meinem localhost), um auf API zuzugreifen.

Ich versuche, swagger.properties-Datei zu erstellen, um den Basispfad zu ändern, hat aber nicht funktioniert. ('http://www.3pillarglobal.com/insights/restful-api-documentation-using-swagger-and-spring-mvc')

enter image description here

Swagger-ui funktioniert gut, wenn ich /rest/* zu /* aber aus Gründen ändern, um dies kann ich nicht tun.

Wie kann ich Swagger-Basispfad ändern, damit es funktioniert?

Antwort

1

Zuerst stellen Sie sicher, dass Sie die letzte Version von springfox (2.4.0 zum Zeitpunkt der Erstellung dieses Dokuments) verwenden. Ich bemerkte, dass der Link auf eine sehr alte Version von Springfox verweist.

Sobald Sie aktualisiert haben, können Sie mit dem Docket eine pathMapping angeben.

.... 
docket.pathMapping("/rest") 
... 
1

Wenn Sie Swagger bereits unter localhost arbeiten: 8080/Rest/Ich denke, das einzige, was in Ihrem Fall fehlt, ist, dass Sie entweder swagger-ui index.html Datei öffnen, nach dem URL-Parameter suchen und ändern können url Sie haben, dass macht die Swagger Definition:

url = "http://localhost:8080/rest/v2/api-docs/swagger.json"; 

oder sicher sein, dass, wenn die Prahlerei-ui index.html genannt wird, ist es so etwas wie dieses hat:

http://localhost:8080/swagger-ui/index.html?url=/rest/v2/api-docs/swagger.json 

Nun, wenn Sie wollen Ändern Sie den Pfad, in dem die Swagger-Definitions-URL angezeigt wird. Sie können erstellen eine Klasse, die wie so von ApiListingResource und außer Kraft setzt den Pfad erstreckt:

@Path("/rest/v2/api-docs/swagger.{type:json|yaml}") 
public class UMSApiListingResource extends ApiListingResource { 
} 

Hinweis: Ich verwende MVC Resteasy nicht obwohl Frühling, aber es sollte ziemlich ähnlich sein.