2017-11-22 4 views
2

Warum sagt Springfox-swagger2 UI mir Unable to infer base url. Soweit ich weiß, verwende ich eine typische Swagger Spring-Boot-Konfiguration.Warum sagt Springfox-swagger2 UI mir "Kann Basis-URL nicht schließen."

Wie Sie auf dem Screenshot sehen können, ist die swagger-fox URL, die die Benutzeroberfläche unterstützt, example.com/api. HINWEIS: Ich erhalte eine Standardfeder Whitelabel Error Page, wenn ich navigiere zu: https://localhost:9600/api/v2/api-docs/. Ich vermute, das ist die Wurzel des Problems? Ich sehe keine Fehler, dass Spring nicht geladen springfox-swagger2 und so weiß ich nicht, warum das nicht funktioniert.

enter image description here

Meine Config sieht wie folgt aus etwas (und ich habe alle möglichen Variationen dieser Konfiguration versucht, aus dem Netz für die Beratung der Suche):

@EnableSwagger2 
@EnableWebMvc 
@ComponentScan(basePackages = {"com.company.project"}) 
public class SwaggerConfig 
{ 
    @Bean 
    public Docket api() { 
     return new Docket(DocumentationType.SWAGGER_2) 
       .select() 
       .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot"))) 
       .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.cloud"))) 
       .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.data.rest.webmvc"))) 
       .paths(PathSelectors.any()) 
       .build(); 
    } 
} 

Und

<!-- to generate /swagger-ui.html --> 
<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger2</artifactId> 
    <version>2.7.0</version> 
</dependency> 

<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger-ui</artifactId> 
    <version>2.7.0</version> 
</dependency> 

HINWEIS: Interessanterweise, wenn ich Version 2.6.0 versuche, bekomme ich das modale Popup nicht, aber mein Swagger UI zeigt 0 API Inhalt. Also, ich weiß, dass Modal muss ziemlich neu sein?

Wenn es hier nicht genug Informationen gibt, lassen Sie mich einen Kommentar.

+0

Setzen Sie einen Haltepunkt bei 'springfox.documentation.swagger2.web.Swagger2Controller # getDocumentation' und debuggen Sie, um herauszufinden, warum beim Zugriff auf' https: // localhost: 9600/api/v2/api ein Fehler auftritt. docs/' –

+0

Ok, danke. Ich werde. Gib mir ein paar Tage dafür. – djangofan

Antwort

0

Es stellt sich heraus, dass die Lösung für mein Problem der @EnableSwagger2 Annotation in das Haupt zu bewegen war Konfigurationsklasse, zusammen mit der Docket Bean.

Ich hatte eine separate Klasse in einem Unterpaket mit dem Docket Bean erstellt und ich hatte erwartet, dass es von Spring gescannt wird und die Bohne lädt. Vielleicht habe ich es versäumt, diese Klasse mit @Component annotieren, oder vielleicht war das Problem etwas anderes, aber ich habe es funktioniert.

1

Erweitern Sie einfach Ihre Hauptklasse mit SpringBootServletInitalizer. Es wird gut funktionieren. Bezug nehmen wie unten.

public class TestApp extends SpringBootServletInitializer{ 

    public static void main(String[] args) { 

     SpringApplication.run(TestApp.class, args); 
    } 
} 
+2

... oder Spring-Boot-Anwendung mit Annotation markieren: @ EnableSwagger2 – Mark

1

Ich konnte das Problem lösen, indem SpringBootApplication mit Anmerkung hinzugefügt - wie von Mark vorgeschlagen:

@EnableSwagger2 
Verwandte Themen