web-dev-qa-db-fra.com

Comment changer basePath pour Springfox Swagger 2.0

J'exécute un service, où Swagger UI est accessible à:

http://serviceURL/swagger-ui.html

Cependant, il est derrière un proxy, tel que:

http://proxyURL/serviceName

Les URL générées par l'interface utilisateur Swagger ressemblent à:

http://proxyURL/

au lieu de l'URL réelle avec le nom de service comme suffixe. Pour autant que je le comprenne, cela signifie manipuler la propriété basePath. Selon la documentation:

Une documentation API swagger ne peut plus décrire les opérations sur différents chemins de base. Dans 1.2 et versions antérieures, chaque ressource aurait pu avoir un chemin de base distinct. En 2.0, les équivalents basePath (schémas + hôte + basePath) sont définis pour la spécification entière.

@Api (basePath) est obsolète, et il ne dit pas quoi utiliser et comment l'utiliser. Comment faire apparaître correctement les chemins générés par Swagger?

J'utilise Spring Boo t, Springfox Swagger et des annotations.

24
Martin Asenov
@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");
}
9
astafev.evgeny