言うまでもなく、この同じ主題についてたくさんの質問がありますが、私はこれを2日間修正しようとしていましたが、読んだことのほとんどは時代遅れです。Spring Swagger-ui integration
はそうそう...これは私が今持っているものです。
の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'
}
メインクラス:
@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("/");
}
私が訪問:http://localhost:8080/v2/api-docs、私はJSON形式のドキュメントを取得しますちょうど良い。また、githubからswagger-uiをダウンロードして、ソースを上記のリンクに設定してデスクトップ上で実行すると、うまく動作します。動作しないものは、これら2つのものをまとめて(http://localhost:8080/swagger-ui.htmlで動作させる)ものです。
彼らは上記のものが闊歩-UIの仕事になりますと主張、これらのような多くのチュートリアル、があります。
http://kubecloud.io/guide-using-swagger-for-documenting-your-spring-boot-rest-api/
http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api
そして彼らがあなたを指示する他のチュートリアルのトンは、 swagger-ui gitのdistフォルダをプロジェクトに追加します。
はまた、このようなマッピング:
@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/");
}
}
スコープ「リクエスト」を投げることは、現在のスレッドのためにアクティブでない、同様に失敗します。例外。
YouTubeからいくつかのチュートリアルを試した後、上にリンクされたチュートリアルや他の多くのチュートリアルは、「ページが見つかりません」と表示されています。誰かが私が逃していることを説明できるなら、私は非常に感謝します。
TL:DR swagger-ui.htmlを動作させるにはどうすればよいですか?
EDIT:ソリューションを見つけました。
誰かがこの問題を抱えている場合は、パラメータ@RequestMapping("/{param}")
を使用するリクエストマッピングがあると、dispatcherServletは/ **をResourceHttpRequestHandlerにマップしなくなります。以下のコードはその問題を修正しています。
@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/");
}
}
swagger-uiはspringfoxが提供するwebjarを使用する必要がありますので、webappに手動でインストールするhtmlまたはcssファイルはありません。 –
助けてくれてありがとう。同じ問題に悩まされました。 –