💻문제점
Spring REST Docs와 Swagger UI를 연동했다.
로컬에서 정상 동작하는 것을 확인하고 개발 서버로 배포해서 테스트했으나, 다음과 같은 오류가 발생했다.
개발 서버 도메인은 https를 사용한다.
하지만, Request URL을 보면 http를 사용하는 것을 볼 수 있다.
🔍해결
Swagger가 기본적으로 http로 요청을 보내기 때문에 발생한 문제다.
SwaggerConfig에서 @OpenAPIDefinition 애노테이션의 servers 속성을 사용하여 API가 호스팅 되는 서버 목록을 정의해주었다.
SwaggerConfig
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.servers.Server;
// ...other import
@OpenAPIDefinition(
servers = {
@Server(url = "https://개발서버.com", description = "개발 서버"),
@Server(url = "http://localhost:8080", description = "로컬 서버")
})
@Configuration
public class SwaggerConfig {
private final String AUTH_SCHEME_NAME = "JWT Access Token";
private final String AUTH_SCHEME = "bearer";
private final String BEARER_FORMAT = "JWT";
@Bean
public OpenAPI openAPI() {
SecurityRequirement securityRequirement =
new SecurityRequirement().addList(AUTH_SCHEME_NAME);
Components components =
new Components()
.addSecuritySchemes(
AUTH_SCHEME_NAME,
new SecurityScheme()
.name(AUTH_SCHEME_NAME)
.type(SecurityScheme.Type.HTTP)
.description("bearer는 제외하고 입력해주세요.")
.scheme(AUTH_SCHEME)
.bearerFormat(BEARER_FORMAT));
return new OpenAPI().components(components).addSecurityItem(securityRequirement);
}
}
배포 후 다시 확인해 본 결과, https를 사용해서 정상적으로 API 호출이 된다.
728x90
'TIL' 카테고리의 다른 글
[TIL - 20240810~12] ElasticSearch 자동 완성 (1) (0) | 2024.08.12 |
---|---|
[TIL-20240805] ElasticSearch + Spring Boot 연동 오류 해결 (0) | 2024.08.05 |
[TIL - 20240612] Swagger Failed to load remote configuration 해결 (0) | 2024.06.12 |
[TIL-231219] 사용자 정의 애노테이션을 사용한 List 요소 검증 (0) | 2024.03.20 |
[TIL-20240307] 주간/월간/연간 섭취량 조회 API 성능 개선 (1) | 2024.03.07 |