Swagger не обнаруживает API, созданный с помощью Spring Data Rest - PullRequest
0 голосов
/ 24 февраля 2019

Я работаю над приложением весенней загрузки, используя swagger для генерации документов для моего API, я использую 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 генерировать документы для Api, сгенерированного данными Spring, или я должен использовать @RestController с аннотациями @ Api, @ ApiOperation

Iиспользую весеннюю загрузочную версию: 2.1.3.RELEASE

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Это помогло мне, обновившись до последнего снимка 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 .

0 голосов
/ 24 февраля 2019

Основываясь на обсуждениях , эта проблема springfox Github выглядит так, как будто вам необходимо изменить класс конфигурации, добавив в него дополнительную аннотацию, например:

@Configuration
@EnableSwagger2
@Import({springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration.class})

Я не могу ее протестироватьпоскольку в настоящее время я использую сваггер только для контроллеров Rest, но надеюсь, что это поможет.

...