web-dev-qa-db-ja.com

springfoxSwaggerを使用してドックのエンドポイントをカスタマイズします

複数のドックのエンドポイントをカスタマイズする方法をインターネットで検索しましたが、答えが見つかりませんでした。

私のモジュールにはいくつかのAPIがあります。さまざまなエンドポイントでSwaggerドキュメントを生成したいと思います。各エンドポイントは、対応するAPIのルートに配置されています。例えば ​​:

  • localhost:8080/v1/Subscriptions/doc

  • localhost:8080/v1/buckets/doc

ドックに異なるエンドポイントを設定する方法は1つしか見つかりませんでしたが、URLが必要なものに対応していません。彼らです :

  • localhost:8080/doc?group = Subscriptions

  • localhost:8080/doc?group = buckets

これが私のSwagger構成ファイルです

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

@Value("${info.version}")
private String version;

@Bean
public Docket subscriptionsApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("subscriptions")
            .apiInfo(subscriptionsApiInfo())
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.mymodule"))
            .paths(PathSelectors.ant("/v1/subscriptions/**"))
            .build();
}

@Bean
public Docket bucketsApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("buckets")
            .apiInfo(bucketsApiInfo())
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.mymodule"))
            .paths(PathSelectors.ant("/v1/buckets/**"))
            .build();
}

private ApiInfo subscriptionsApiInfo() {
    return new ApiInfoBuilder()
            .title("Subscriptions Api definition")
            .description("Subscriptions Api definition")
            .version(version)
            .build();
}

private ApiInfo bucketsApiInfo() {
    return new ApiInfoBuilder()
            .title("Bucket Api definition")
            .description("Bucket Api definition")
            .version(version)
            .build();
}
}

そして私のapplication.ymlファイルに私は書いた:

springfox.documentation.swagger.v2.path: "/doc"

私が望む方法でエンドポイントを定義する方法を知っていますか?

前もって感謝します

8
salidou

私は答えを見つけました!

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {


@Override
public void addViewControllers(ViewControllerRegistry registry) {

    registry.addRedirectViewController("/v1/subscriptions/doc", "/doc?group=subscriptions");


}
}
3
salidou