Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • java
  • webflux
  • 문자열
  • 안드로이드
  • 다이나믹 프로그래밍
  • 백준
  • kibana
  • Wil
  • 코틀린
  • elasticsearch
  • spring
  • rsocket
  • 파이썬
  • 프로그래머스
  • Docker
  • 코틀린 인 액션
  • 우아한테크코스
  • 에라토스테네스의 체
  • 프리코스
  • 코딩테스트
  • Android
  • SQL
  • kotlin
  • MariaDB
  • 레포지토리
  • ec2
  • til
  • enum
  • grafana
  • 내림차순

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

[TIL - 20240612] Swagger HTTPS 설정
TIL

[TIL - 20240612] Swagger HTTPS 설정

2024. 6. 12. 22:39

 

💻문제점

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
    'TIL' 카테고리의 다른 글
    • [TIL - 20240810~12] ElasticSearch 자동 완성 (1)
    • [TIL-20240805] ElasticSearch + Spring Boot 연동 오류 해결
    • [TIL - 20240612] Swagger Failed to load remote configuration 해결
    • [TIL-231219] 사용자 정의 애노테이션을 사용한 List 요소 검증
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바