web-dev-qa-db-ja.com

SpringFox SwaggerUIで基本的なエラーコントローラーを削除する

Springfox swagger-uiから「basic-error-controller」を削除する方法はありますか?

画像:

enter image description here

26
Rajkishan Swami

リクエストハンドラセレクタを制限して、プロジェクトのパッケージのみをスキャンすることができます。

    return new Docket( DocumentationType.SWAGGER_2)
        .select()
        .apis( RequestHandlerSelectors.basePackage( "your package" ) )
        ...
47
Carsten Zeitz

最もエレガントな解決策は、@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で適格なコントローラーとしてマークすることができます。

20
bladekp
  • 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();
    }
    
12
Pranav V R

たとえば、親パッケージが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();
    }

enter image description here

6
Tapan Banker

Uは、springfox-swagger2アノテーションも使用できます。 springfox.documentation.annotations.ApiIgnore

@ApiIgnore
public class ErrorController {

これにより、そのクラスがドキュメントから除外されます。

3
Antony Mithun

これは、_@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);
}
_
1

多くの解決策を試した後、何もうまくいきません。最後に、非常に基本的なこと、つまり、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();
}

この画像を確認してください

0
ASK