springboot swagger3 "원격 구성을 로드하지 못했습니다."
Springdoc을 사용한 Spring Boot 2.6.3.
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.5</version>
</dependency>
applicaton.yaml경로를 /v3/api-docs로 설정하거나 제거하면 기본 경로 "/v3/api-docs"를 사용합니다.html Swagger UI로 됩니다. http://localhost:8080/swagger-ui/index.html은 다음과 같습니다.
하지만 나는 아래와 같이 경로를 오버라이드하고 싶습니다.
api-docs.path: /bus/v3/api-docs
그러면 Swagger UI에 "원격 구성 로드 실패" 오류가 표시됩니다.

Make sure to add "/v3/api-docs/**" in configure method.
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/swagger-ui/**", "
/v3/api-docs/**");
}
}
앱에서 Spring Security를 사용하는 경우 구성에 URL을 포함해야 합니다.당신의 프로젝트에 아래 코드를 추가해주세요.
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/swagger-ui/**", "/bus/v3/api-docs/**");
}
}
저도 같은 문제가 있었습니다. 만약 당신이 역방향 프록시 뒤에 있다면, 수정은 application.yml에 다음 속성을 추가하는 것이었습니다.
server:
forward-headers-strategy: framework
이것은 다음과 같은 이유로 필요합니다.
Swagger는 내부 라우팅에 의존하여 클라이언트의 관점에서 요청을 합니다.X-Forwarded 헤더를 제공하지 않고 역방향 프록시 뒤에 서비스를 배치하면 사용자가 원하는 대로 설명서를 사용할 수 없게 됩니다.
출처 -> https://medium.com/swlh/swagger-spring-boot-2-with-a-reverse-proxy-in-docker-8a8795aa3da4
브라우저에서 "빈 캐시 및 하드 새로 고침"을 수행합니다.
(@Ivan Zaitsev 덕분에) 문제를 해결했다고 생각합니다. 단지 답변에 더 명확한 설명을 추가하고 싶었습니다.
저도 api-docs.path 속성을 변경했는데 같은 문제가 있었습니다.Swagger UI 페이지의 요청을 검사하면 이전 URL에서 구성을 가져오려고 했기 때문에 Swagger-config 요청이 404를 반환합니다.
제가 api-docs.path 속성을 변경했지만, 여기 swagger-config를 검색하려는 요청 URL이 있습니다.http://localhost:8080/api/v3/api-hosts/swagger-config
브라우저 캐시와 쿠키를 지웠을 때 해결할 수 있었기 때문에 openapi-ui와 관련된 문제였던 것으로 밝혀졌습니다.세션에 데이터가 저장되어 있지 않으므로 브라우저를 인식하지 않고 테스트를 수행하는 것이 좋습니다.
SpringBoot v3를 사용하는 경우 springdoc-openapi v2를 사용해야 합니다.
예를 들어 그라들의 경우:
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
오래된 질문이지만 답을 찾고 있을 때 여기에 왔습니다. 그래서 새로운 버전에서 작동하도록 만든 후, 제 대답을 공유하기로 결정했습니다. 아마도 누군가 유용하게 사용할 수 있을 것입니다.
이것은 스프링 보안을 위한 나의 구현입니다 - 3.1.0 및 Gradle이 있는 openApi 2.1.0:
implementation "org.springframework.boot:spring-boot-starter-security:3.1.0"
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0"
@EnableWebSecurity
public class SecurityConfiguration {
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeHttpRequests()
.requestMatchers("/swagger-ui/**",
"/swagger-resources/*",
"/v3/api-docs/**")
.permitAll()
.anyRequest()
.authenticated();
return http.build();
}
}
requestMatcher에서 "/bus/v3/api-docs"와 같은 경로를 지정해야 합니다.가장 좋은 방법은 하나씩 구현하는 것입니다.
- "/**"가 작동하는지 확인합니다.
- /bus/**가 작동하는지 확인합니다(내 경우 전체 프로젝트에 대해 설정된 기본 경로 "/api"가 있고 전체 경로는 이와 같음 - /api/swagger-ui/**가 작동하지 않았지만 /swagger-ui/**가 작동함).
- 그런 다음 /bus/v3/**가 작동하는지 다시 확인합니다.
- 두 개의 별은 와일드카드입니다.
심지어 스웨거에 대한 제 경로는 다음과 같습니다: api/swagger-ui/index.html#/ 저는 그것이 작동하도록 하기 위해 matcher: v3/api-docs/**를 추가해야 했습니다.
언급URL : https://stackoverflow.com/questions/70906081/springboot-swagger3-failed-to-load-remote-configuration
'programing' 카테고리의 다른 글
| 함수를 제외한 모든 변수 제거 (0) | 2023.07.02 |
|---|---|
| .NET의 문자열에서 큰따옴표 제거 (0) | 2023.07.02 |
| 뷰가 스키마 바운드되지 않았으므로 'View_Table_Name' 뷰에 인덱스를 만들 수 없습니다. (0) | 2023.06.27 |
| mongoose/mongodb 쿼리 다중 정렬 (0) | 2023.06.27 |
| mongoose 문서 인스턴스를 복사/복제하는 가장 쉬운 방법은 무엇입니까? (0) | 2023.06.27 |