未在Swagger UI中生成Spring Data REST端点

问题描述 投票:0回答:1

我使用@BasePathAwareController实现了一个控制器,该控制器还利用了Spring Data REST(用于发现排序/大小等内容)。以及一些自定义的端点(用于更新等)。该应用程序按预期工作,并且端点为SpringREST生成的数据按预期工作,我可以看到响应中出现了自我链接,但是我看不到Swagger UI中的这些端点。我可以看到我的自定义端点在我的控制器中定义。

根据此post,我需要将Swagger 3.0.0-SNAPSHOT@EnableSwagger2WebMvc结合使用

这是我的配置:

我的app.yml

spring:
    data:
      rest:
        basePath: /api/v1

我的POM文件:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath/>
</parent>
<properties>        
        <springfox.swagger.version>3.0.0-SNAPSHOT</springfox.swagger.version>       
</properties>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>${springfox.swagger.version}</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>${springfox.swagger.version}</version>         
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-data-rest</artifactId>
    <version>${springfox.swagger.version}</version>
</dependency>

Swagger配置文件:

@Configuration
@Import(SpringDataRestConfiguration.class)
@EnableSwagger2WebMvc
public class SwaggerConfig {

    @Bean
    public Docket api(ServletContext servletContext) {
        return new Docket(DocumentationType.SWAGGER_2)          
        .select()
        .apis(RequestHandlerSelectors.basePackage("my.package.name"))
        .paths(PathSelectors.any())
        .build().apiInfo(apiEndPointsInfo());
    }

    private ApiInfo apiEndPointsInfo() {
        return new ApiInfoBuilder().title("My App REST API's")
            .description("My App REST API's")            
            .version("1.0").build();
    }

}

我的仓库:

  @RepositoryRestResource(exported=true, collectionResourceRel="group", path="group")
public interface GroupRepository extends JpaRepository<Group, Long>, JpaSpecificationExecutor<Group> {


}

为什么我看不到Spring Data REST产生的默认端点?

spring-boot swagger swagger-ui spring-data-rest springfox
1个回答
0
投票

我发现了问题所在。我不知道Spring Data REST不会在我在此处指定的控制器包名称下公开生成的端点:

.apis(RequestHandlerSelectors.basePackage("my.package.name"))

所以当我将以上行更改为:

.apis(RequestHandlerSelectors.any())

并且我可以看到JPA存储库端点。

© www.soinside.com 2019 - 2024. All rights reserved.