복붙노트

[SPRING] 기본 URL을 유추 할 수 없습니다. 동적 서블릿 등록을 사용하거나 API가 API 게이트웨이 뒤에있는 경우에 일반적입니다.

SPRING

기본 URL을 유추 할 수 없습니다. 동적 서블릿 등록을 사용하거나 API가 API 게이트웨이 뒤에있는 경우에 일반적입니다.

나는 이미 갔다 왜 springfox-swagger2 UI가 "기본 URL을 유추 할 수 없다"고 나에게 말합니까? Spring Boot로 Swagger를 구성하고 Spring Security를 ​​전혀 사용하지 않고 각 서비스마다 예기치 않은 결과가 발생합니다. 각 서비스마다 @ EnableSwagger2 주석을 사용하고 있습니다.

나는 https://dzone.com/articles/quick-guide-to-microservices-with-spring-boot-20-e 링크에서 튜토리얼을 따르고 프록시 서비스 대신 프로젝트가 실행되도록 gateway-service 사용 .

gateway-service.yml

server:
  port: 8060

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8061/eureka/

logging:
  pattern: 
    console: "%d{yyyy-MM-dd HH:mm:ss} ${LOG_LEVEL_PATTERN:-%5p} %m%n"

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
      - id: employee-service
        uri: lb://employee-service
        predicates:
        - Path=/employee/**
        filters:
        - RewritePath=/employee/(?<path>.*), /$\{path}
      - id: department-service
        uri: lb://department-service
        predicates:
        - Path=/department/**
        filters:
        - RewritePath=/department/(?<path>.*), /$\{path}
      - id: organization-service
        uri: lb://organization-service
        predicates:
        - Path=/organization/**
        filters:
        - RewritePath=/organization/(?<path>.*), /$\{path}

OrganizationApplication.java 및 기타 모든 서비스는 이와 같이 정확하게 구현됩니다.

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableSwagger2
public class OrganizationApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrganizationApplication.class, args);
    }

    @Bean
    public Docket swaggerApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                    .apis(RequestHandlerSelectors.basePackage("pl.piomin.services.organization.controller"))
                    .paths(PathSelectors.any())
                .build()
                .apiInfo(new ApiInfoBuilder().version("1.0").title("Organization API").description("Documentation Organization API v1.0").build());
    }

    @Bean
    OrganizationRepository repository() {
        OrganizationRepository repository = new OrganizationRepository();
        repository.add(new Organization("Microsoft", "Redmond, Washington, USA"));
        repository.add(new Organization("Oracle", "Redwood City, California, USA"));    
        return repository;
    }
}

해결법

  1. ==============================

    1.springfox-swagger2 및 springfox-swagger-ui 종속성을 2.9.2 버전으로 업그레이드하십시오.

    springfox-swagger2 및 springfox-swagger-ui 종속성을 2.9.2 버전으로 업그레이드하십시오.

  2. from https://stackoverflow.com/questions/54285556/unable-to-infer-base-url-this-is-common-when-using-dynamic-servlet-registration by cc-by-sa and MIT license