Unnötig zu sagen, ich weiß, es gibt eine Tonne Fragen über das gleiche Thema, aber ich habe festgeklemmt versucht, dies für 2 Tage jetzt zu beheben und das meiste von dem, was ich gelesen habe, ist veraltet.Spring Swagger-ui Integration
Also ja .. das ist, was ich jetzt haben:
Gradle:
dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-hystrix'
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-starter-actuator'
compile 'org.springframework.boot:spring-boot-starter-security'
compile 'org.springframework.ws:spring-ws-core'
compile 'io.springfox:springfox-swagger2:2.4.0'
compile 'io.springfox:springfox-swagger-ui:2.4.0'
}
Hauptklasse:
@EnableSwagger2
public class Application {
public static void main(String[] args) {
SpringApplication.run(FeedServiceApplication.class, args);
}
@Bean
public Docket swaggerSettings() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.pathMapping("/");
}
Als ich unter: http://localhost:8080/v2/api-docs ich die json Dokumentation erhalten Alles gut. Auch wenn ich swagger-ui von github herunterlade, stelle die Quelle auf den obigen Link und führe es auf dem Desktop aus, es funktioniert auch gut. Was nicht funktioniert, ist diese zwei Dinge zusammen zu setzen (es zur Arbeit bei http://localhost:8080/swagger-ui.html zu bringen).
Es gibt viele Tutorials wie diese, wo sie das Zeug oben behaupten wird Prahlerei-ui Arbeit machen:
http://kubecloud.io/guide-using-swagger-for-documenting-your-spring-boot-rest-api/
http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api
Und eine Tonne von anderen Tutorials, wo sie Sie anweisen, Fügen Sie den Ordner dist von swagger-ui git zu Ihrem Projekt hinzu.
Kartierung auch so: nicht aktiv für den aktuellen Thread
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("**/swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("**/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
als auch fehlschlägt, Scope 'Antrag' ist werfen; Ausnahme.
Nachdem ich einige Tutorials von Youtube, die oben verlinkten und viele andere versucht habe, habe ich nur "Seite nicht gefunden" gesehen. Wenn jemand erklären könnte, was ich vermisse, wäre ich sehr dankbar.
TL: DR Wie bekomme ich swagger-ui.html zum arbeiten?
EDIT: gefunden Lösung.
Falls jemand anderes darüber stolpert, besteht das Problem darin, dass, wenn Sie eine Anforderungszuordnung haben, die einen Parameter @RequestMapping("/{param}")
aufnimmt, DispatcherServlet nicht mehr/** zu ResourceHttpRequestHandler mappt. Der folgende Code behebt dieses Problem.
@Configuration
@EnableAutoConfiguration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurerAdapter{
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()).build();
}
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
Die Swagger-Ui, die Sie verwenden müssen, ist die, die von Springfox bereitgestellt wird und Webjar verwendet, also keine HTML- oder CSS-Dateien, die Sie manuell in Ihrer Webanwendung installieren müssen. –
Danke für die Hilfe. War im selben Problem stecken geblieben. –