programing

Swagger가 Spring Boot을 사용하여 Spring Data Rest API를 감지하지 못함

starjava 2023. 7. 21. 20:27
반응형

Swagger가 Spring Boot을 사용하여 Spring Data Rest API를 감지하지 못함

Spring Data Rest 및 Swagger를 포함한 Spring Boot 프로젝트를 설정했습니다.

<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>

내 스웨거 구성은 다음과 같습니다.

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

application.properties에서 발췌:

spring.data.rest.base-path=/api
server.context-path=/myapp

서버를 실행할 때 모든 rest 끝점이 올바르게 매핑되어 있으며 다음에 연결할 수 있습니다./myapp/api/...제가 직접 만든 맞춤형 Rest Controller를 포함합니다.

그러나:

  • http://localhost:8080/myapp/apiSpring Data Rest API 목록(Json 형식)은 볼 수 있지만 사용자 지정 RestController 끝점은 볼 수 없습니다.

  • http://localhost:8080/myapp/swagger-ui.htmlSpring Data Rest API가 아닌 사용자 지정 Rest Controller와 오류 끝점만 나열하는 멋진 GUI가 보입니다.실제로 http://localhost:8080/myapp/v2/api-docs는 Spring Data Rest 끝점을 전혀 참조하지 않고 사용자 지정 Rest Controller와 오류 끝점만 참조합니다.

Spring Data Rest & 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>

스프링 구성/응용 프로그램 클래스에 스프링 데이터 복원 주석을 추가로 가져옵니다.

@Import(SpringDataRestConfiguration.class)

Spring Data Rest 지원은 Springfox 버전 2.6.0에서만 도입되었습니다.springfox의 최신 버전(이 문서 작성 당시 2.6.1)으로 업그레이드한 후 지침을 따르면 엔드포인트 렌더링에 문제가 없을 것입니다.

springfox-data-rest에서 구성을 가져왔습니까?Dilip Krishnan의 말처럼 지침에 따라 구성을 가져와서 이 주석을 기본 애플리케이션 클래스에 추가했습니다.

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

도움이 되길 바랍니다!

스프링 부트 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();
  }
}

언급URL : https://stackoverflow.com/questions/41425425/swagger-not-detecting-spring-data-rest-apis-with-spring-boot

반응형