我设置了Spring Boot项目,包括Spring Data Rest和Swagger:
()
这是我的Swagger配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
摘自application.properties:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
当我运行服务器时,所有其他端点都被正确映射并可以到达spring.data.rest.base-path=/api
server.context-path=/myapp
,包括我自己创建的自定义RestController。
然而:
在/myapp/api/...
我可以看到Spring的列表
Data Rest API(采用Json格式)但无法查看我的自定义RestController端点。
在http://localhost:8080/myapp/api
我看到一个很好的gui,它只列出我的自定义RestController和错误端点,而不是Spring Data Rest API。事实上,http://localhost:8080/myapp/v2/api-docs不会引用Spring Data Rest端点,而只会引用我的自定义RestController和错误端点。
如何修复Spring Data Rest&amp; Swagger配置?
答案 0 :(得分:6)
升级到swagger的最新版本
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-data-rest</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
另外在spring Configuration / Application类上导入spring数据休息注释。
@Import(SpringDataRestConfiguration.class)
答案 1 :(得分:5)
Spring Data Rest support仅在springfox 2.6.0版本中引入。如果您在升级到最新版本的springfox(撰写本文时为2.6.1)后遵循the instructions,那么渲染端点应该没有问题。
答案 2 :(得分:3)
您是否从springfox-data-rest导入配置?正如Dilip Krishnan所说,我按照说明操作并导入配置,将此注释添加到我的主应用程序类中:
@Import({springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration.class})
希望它有所帮助!
答案 3 :(得分:1)
对于Spring Boot 2,您需要使用springfox 3.0
。不幸的是,在撰写本文时,此版本尚未发布,但您可以使用快照版本。
<repositories>
<repository>
<id>jcenter-snapshots</id>
<name>jcenter</name>
<url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
</repository>
</repositories>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
此外,您需要将@EnableSwagger2
替换为@EnableSwagger2WebMvc
。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
@Configuration
@EnableSwagger2WebMvc
@Import(SpringDataRestConfiguration.class)
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}