2016-03-24 27 views
11

biegnę usługę, gdzie Swagger UI jest dostępny pod adresem:Jak zmienić basePath dla Springfox Swagger 2,0

http://serviceURL/swagger-ui.html 

Jednak to jest za serwerem proxy, takich jak:

http://proxyURL/serviceName 

Wygenerowane adresy URL w interfejsie użytkownika Swagger wyglądają następująco:

http://proxyURL/ 

zamiast rzeczywistego adresu URL z nazwą usługi jako sufiksem. O ile rozumiem, oznacza to manipulowanie właściwością basePath. Zgodnie z dokumentacją:

Dokumentacja API typu "swagger" nie może opisywać operacji na różnych ścieżkach bazowych na . W wersji 1.2 i wcześniejszych każdy zasób mógł mieć oddzielną ścieżkę podstawową. W wersji 2.0, odpowiedniki basePath (schematy + host + bazaPath) są zdefiniowane dla całej specyfikacji.

@Api (basePath) jest przestarzałe i nie mówi, co używać i jak z niego korzystać. Jak poprawnie wyświetlać ścieżki wygenerowane przez Swagger?

Używam Spring Boot, Springfox Swagger i adnotacji.

+0

Czy byłeś w stanie rozwiązać ten @Martin? – Sampada

+2

Po prostu zrobiłem Docket.pathMapping ("serviceName"), ale myślę, że to jest tylko surowe obejście dla brakującej funkcjonalności w Springfox, wciąż czekając na odpowiedź –

+2

Szukałem tego samego. –

Odpowiedz

0
@Bean 
public Docket newsApi(ServletContext servletContext) { 
    return new Docket(DocumentationType.SWAGGER_2).pathProvider(new RelativePathProvider(servletContext) { 
     @Override 
     public String getApplicationBasePath() { 
      return "/serviceName" + super.getApplicationBasePath(); 
     } 
    }).host("proxyURL"); 
}