我正在使用swagger为我的API生成文档的Spring Boot应用程序上工作,我正在使用Spring data rest生成Api,但是当我运行该应用程序时,我收到了swagger消息:未定义任何操作规格!
这是我的Api代码:
@Api(tags = "projets")
@RepositoryRestResource(collectionResourceRel = "projets", path = "projets")
public interface IProjectRepository extends JpaRepository<Project, Long> {
}
这是我的配置文件:
@Configuration
@EnableSwagger2
public class QfactoryConfiguration {
@Bean
public Docket getDocketInstance() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
.title("Spring Boot project")
.description("Spring Boot bootstrap project")
.version("0.1")
.license("Unlicense")
.build())
.select()
.apis(RequestHandlerSelectors.basePackage("com.errabi.qfactory.repositories"))
.paths(PathSelectors.any())
.build();
}
}
这是我正在使用的依赖项:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-data-rest</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
我要问的是Swagger是否能够为Spring数据生成的Api生成文档,或者我应该使用带有注释@ Api,@ ApiOperation的@RestController
我使用的是Spring Boot版本:2.1.3.RELEASE
答案 0 :(得分:1)
基于对this的讨论,springfox Github问题看起来像您需要修改config类以包含附加注释,即:
@Configuration
@EnableSwagger2
@Import({springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration.class})
我无法对其进行测试,因为我目前仅对摇杆控制器使用摇摇欲坠,但希望这会有所帮助。
答案 1 :(得分:0)
这对我有用,升级到了springfox的最新快照
<dependencies>
...
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-data-rest</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
...
</dependencies>
<repositories>
<repository>
<id>JFrog</id>
<name>JFrog Snapshot Repository</name>
<url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
</repository>
</repositories>
然后使用@EnableSwagger2WebMvc
代替@EnableSwagger2
:
@SpringBootApplication
@EnableSwagger2WebMvc
@Import(SpringDataRestConfiguration.class)
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
非常感谢Yann39。
答案 2 :(得分:0)
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<swagger>3.0.0-SNAPSHOT</swagger>
</properties>
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-data-rest</artifactId>
<version>${swagger}</version>
</dependency>
</dependencies>
application.yaml
spring:
data:
rest:
base-path: /v1
java配置
@Configuration
@EnableSwagger2WebMvc
@Import(SpringDataRestConfiguration.class)
public class SwaggerConfig
答案 3 :(得分:0)
尝试使用RequestHandlerSelectors.any()
代替RequestHandlerSelectors.basePackage("")
。
答案 4 :(得分:0)
验证您的包裹并添加
@Configuration
@EnableSwagger2
到Spring Boot配置文件
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2).select()
.apis(RequestHandlerSelectors.basePackage("your.package.name")).paths(PathSelectors.any()).build()
.apiInfo(apiEndPointInfo());
}
只需要那些依赖项
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
您的最终配置文件应如下所示
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@Configuration
@EnableSwagger2
public class TestappApplication implements WebMvcConfigurer {
private static final String PREFIX = "/WEB-INF/views/";
private static final String SUFFIX = ".jsp";
public static void main(String[] args) {
SpringApplication.run(TestappApplication.class, args);
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp(PREFIX, SUFFIX);
}
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2).select()
.apis(RequestHandlerSelectors.basePackage("your.package.scan.to.swagger.annotations")).paths(PathSelectors.any()).build()
.apiInfo(apiEndPointInfo());
}
public ApiInfo apiEndPointInfo() {
return new ApiInfoBuilder().title("Spring Boot Rest API").description("user Management API")
.contact(new Contact("zouhair kasmi", "website.com/", "myemail@gmail.com"))
.license("Apache 2.0").licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
.version("0.0.1-SNAPSHOT").build();
}
}