programing

Swagger UI를 스프링 부팅과 함께 사용할 수 없습니다.

megabox 2023. 2. 15. 21:49
반응형

Swagger UI를 스프링 부팅과 함께 사용할 수 없습니다.

Swagger UI를 Spring Boot 1.2.1로 동작시키려 합니다.https://github.com/martypitt/swagger-springmvc의 지시에 따라 추가했습니다.@EnableSwaggerspring config로 설정합니다.

저는 지금 JSON을 돌려받아서http://localhost:8080/api-docs좋은 HTML은 없어요.

Maven을 사용하고 있으며 swag-ui에 대한 의존도를 추가했습니다.

<dependency>
    <groupId>org.ajar</groupId>
    <artifactId>swagger-spring-mvc-ui</artifactId>
    <version>0.4</version>
</dependency>

다음은 나의 전체 종속성 목록입니다.

<dependencies>
        <dependency>
            <groupId>com.mangofactory</groupId>
            <artifactId>swagger-springmvc</artifactId>
            <version>0.9.4</version>
        </dependency>
        <dependency>
            <groupId>org.ajar</groupId>
            <artifactId>swagger-spring-mvc-ui</artifactId>
            <version>0.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

나도 노력했어http://localhost:8080/docs/index.html"Whitelabel Error Page(화이트라벨 오류 페이지)"만 표시됩니다.

업데이트:

문제를 나타내기 위해 Github에서 테스트 프로젝트를 만들었습니다.https://github.com/wimdeblauwe/springboot-swagger-test

당신의 문제는 당신의SwaggerConfiguration서류철을 가져와야 합니다@EnableWebMvc이는 기본 Spring Boot 뷰 리졸바가 기본 Spring WebMvc에 의해 덮어쓰게 되어 스태틱콘텐츠가 다르게 처리되기 때문입니다.

기본적으로는 Spring Boot은 다음 중 하나의 디렉토리에서 스태틱콘텐츠를 제공합니다.

  • /META-INF/리소스/
  • /timeout/
  • /static/
  • /public/

Webjar를 포함합니다.

저도 같은 문제가 있었습니다.이 문서는 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-auto-configuration 입니다.

봄 MVC를 완전히 제어하고 싶다면 자신의 MVC를 추가할 수 있습니다.@Configuration으로 주석을 단.@EnableWebMvcSpring Boot MVC 기능을 유지하고 싶은 경우 MVC 구성(인터셉터, 포메터, 뷰 컨트롤러 등)을 추가할 수 있습니다.@Bean타입의WebMvcConfigurerAdapter, , 없음 @EnableWebMvc.

이게 도움이 됐으면 좋겠어요.

swagger-ui v0.4(spring v4.14 & swagger-springmvc v0.9.4)는 정상적으로 동작하고 있습니다만, 처음에는 같은 문제가 있었습니다.이 수업은 효과가 있는 것 같아요.

@Configuration
@EnableSwagger
public class SwaggerConfig extends WebMvcConfigurerAdapter {

    @Autowired
    private SpringSwaggerConfig springSwaggerConfig;

    @Bean
    public SwaggerSpringMvcPlugin customImplementation() {
        return new SwaggerSpringMvcPlugin(springSwaggerConfig).apiInfo(
                apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfo(/* strings */);
    }

    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

나는 관련 사항이 오버라이드된 것이라고 생각한다.configureDefaultServletHandling그리고 메인에서WebApplicationInitializer, 다음과 같은 것이 있습니다.

@Import(SwaggerConfig.class)

마지막으로 의존관계에 다음과 같은 내용을 포함하여 UI 위치 상자에 "http://localhost:8080${pageContext.request.contextPath}/api-docs"라고 표시되어 있는 문제를 해결했습니다.

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <!--<version>8.0.15</version>-->
    <scope>provided</scope>
</dependency>

이것은 JSP 처리와 관련된 무언가를 제공합니다.그것은 의 의존관계에 포함된다.spring-boot하지만 보통 그렇지는 않습니다.provided.

도움이 됐으면 좋겠다.

springfox swagger-ui 3.x 이상 버전에서 이 문제가 발생하는 경우.

다음 URL을 사용해 보십시오.나한테는 효과가 있었어

http://localhost:8080/http-ui/

swagger 문서의 상세한 순서에 대해서는, http://muralitechblog.com/swagger-rest-api-dcoumentation-for-spring-boot/ 를 참조해 주세요.

같은 문제가 있습니다만, 이 링크는 기능합니다.http://localhost:8080/sdoc.jsp

swagger UI 리소스 URL 상자에 http://localhost:8080${pageContext.request.contextPath}/api-docs가 미리 채워집니다.

${pageContext.request.contextPath}를 삭제하고 탐색을 누르면 API 문서가 표시되며 엔드포인트를 성공적으로 시도할 수도 있습니다.따라서 분명히 문제가 있지만 ${pageContext.request/contextPath}를 선택하지 않을 수 있습니다.

Javascript에 포함된 소스: url: window.location.origin + "${pageContext.request.contextPath}/api-docs"

static swagger ui html에서 이 부분은 다음과 같이 코드화되어 있습니다.

discoveryUrl : . / resource - list . json "

이게 좀 도움이 됐으면 좋겠는데

위의 Tamas에서 알 수 있듯이 문제는 @EnableWebMvc를 사용하는 데 있습니다.이것에 의해, 디폴트의 셋업으로 Swagger가 필요로 하는 것은 생략됩니다.그것을 @EnableSwagger2로 바꾸는 것으로, 같은 증상을 보이는 프로젝트의 문제를 해결할 수 있었습니다.

나는 내 프로젝트에서 같은 문제에 직면했다.문제를 해결했습니다.

pom.xml에 다음 의존관계가 추가되었습니다.

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

프로젝트 레벨에서 다음과 같이 swagger2 UI 구성이 추가되었습니다.

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

다음으로 swagger UI 문서http://localhost:8080/swagger-ui/를 입수할 수 있습니다.

swagger API 문서 http://localhost: 8080/v2/api-api-displays

따로 는 Swagger가 없으면@EnableAutoConfiguration이치노

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

@EnableSwagger2 태그를 사용하여 다음 단계와 코드를 따를 것을 권장합니다.https://github.com/sanketsw/SpringBoot_REST_API

또, 다음의 의존성을 사용하고 있어, 완벽하게 기능합니다.

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.2.2</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.2.2</version>
    <scope>compile</scope>
</dependency>

언급URL : https://stackoverflow.com/questions/27861872/unable-to-get-swagger-ui-working-with-spring-boot

반응형