Customize endpoints of dockets with springfox Swagger

Viewed 8878

I've searched on the internet how to customize endpoints of my multiple dockets, but haven't found the answer.

My module has several APIs. I want to generate Swagger documentation on different endpoints, each one positioned on the root of its corresponding API. For example :

  • localhost:8080/v1/subscriptions/doc

  • localhost:8080/v1/buckets/doc

I've found only one way to have different endpoints for my dockets, but the URL don't correspond to what I want. They are :

  • localhost:8080/doc?group=subscriptions

  • localhost:8080/doc?group=buckets

Here is my Swagger configuration file

@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();
}
}

And in my application.yml file, I've written :

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

Do you know a way to define the endpoints on the way I want?

Thanks in advance

1 Answers
Related