リクエストハンドラセレクタを制限して、プロジェクトのパッケージのみをスキャンすることができます。
return new Docket( DocumentationType.SWAGGER_2)
.select()
.apis( RequestHandlerSelectors.basePackage( "your package" ) )
...
最もエレガントな解決策は、@RestController
コントローラーのみをswaggerに含めることです。覚えておくべきことは、すべてのRESTコントローラーにそのアノテーションを付けることです。
new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(PathSelectors.any())
.build();
BasicErrorController
には@Controller
のみの注釈が付けられているため、swaggerは定義ファイルでBasicErrorController
を回避します。もちろん、@RestController
の代わりにカスタムアノテーションを使用して、RESTコントローラーをswaggerで適格なコントローラーとしてマークすることができます。
Predicates.not()を使用して実行できます。
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
たとえば、親パッケージがcom.app.microserviceの場合
package com.app.microservice;
次に、次のコードを使用して、パッケージ内のコントローラーのみを表示し、他のコントローラーを無効化/除外します
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.app.microservice"))
.build();
}
Uは、springfox-swagger2アノテーションも使用できます。 springfox.documentation.annotations.ApiIgnore
@ApiIgnore
public class ErrorController {
これにより、そのクラスがドキュメントから除外されます。
これは、_@Bean
_定義をメインクラス(_@SpringBootApplication
_を持つもの)に移動し、this.getClass().getPackageName()
をbasePackage()
で使用することで実行できます。
_@Bean
public Docket swagger() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage(this.getClass().getPackageName()))
.paths(PathSelectors.any())
.build()
.useDefaultResponseMessages(false);
}
_
多くの解決策を試した後、何もうまくいきません。最後に、非常に基本的なこと、つまり、swagger設定ファイルとメインメソッドファイルを定義したファイルを確認しましたは同じパッケージに含まれている必要があります。
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}