Swagger 는 API를 설계, 빌드, 문서화하고, 이를 사용하는 개발자 및 클라이언트 간의 상호작용을 용이하게 하는 도구임. 주로 웹 API를 개발하고 관리하는 데 사용됨. Swagger는 OpenAPISpecification(OAS)라는 표준 스펙을 따르며, 이를 사용하여 APIㅊ를 설명하고 문서화함
- API 문서화
- API에 대한 자동화된 문서를 생성할 수 있음. API의 엔드포인트, 요청 및 응답 형식, 매개변수, 인증 방법 등을 자세히 설명함
- API 테스트
- Swagger UI를 통해 API를 테스트할 수 있음. API 엔드포인트에 대한 요청을 시뮬레이션하고 응답을 확인하는 데 도움이 됨
- 코드 생성
- Swagger 스펙을 기반으로 코드를 자동으로 생성할 수 있음. 이를 통해 여러 프로그래밍 언어 및 프레임워크에서 API를 사용하는 데 도움이 됨
- API 관리
- Swagger를 사용하여 API를 관리하고 모니터링할 수 있음. API 버전 관리, 보안, 사용량 제한 등을 설정할 수 있음
변경 전
@Configuration
@ConditionalOnProperty(name = "spring.profiles.active")
public class SwaggerConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.components(new Components())
.info(new Info()
.title("REST API도구")
.description("별도의 클라이언트 프로그램 없이, Restful방식의 오픈API를 웹에서 테스트 할 수 있도록 도구와 환경을 제공합니다."));
}
@Bean
public OpenApiCustomiser openApiCustomiser() {
return openApi -> {
openApi.addServersItem(new Server().url("https://dev").description("Dev Https Server"));
openApi.addServersItem(new Server().url("https://stg").description("Stg Https Server"));
openApi.addServersItem(new Server().url("https://prod").description("Prod Https Server"));
};
}
}
`openApiCustomiser` 해당 메서드 없이 swagger를 접속하려면, http만 가능했다.
`SwaggerConfig` 클래스에 `openApiCustomiser` 메서드를 추가하고, https url에 대한 설정을 따로 해준다.
그러면 https url로 접속이 가능하다.
https로 접속을 했기 때문에, Servers 부분에서도 https 로 된 url을 선택해야 한다.
하지만 dev에서는 dev만 보고 싶은데, 위처럼 dev, stg, prod가 모두 나오고 있었다.
변경 후
@Configuration
@ConditionalOnProperty(name = "spring.profiles.active")
public class SwaggerConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.components(new Components())
.info(new Info()
.title("REST API도구")
.description("별도의 클라이언트 프로그램 없이, Restful방식의 오픈API를 웹에서 테스트 할 수 있도록 도구와 환경을 제공합니다."));
}
@Bean
@Profile("dev")
public OpenApiCustomiser openApiCustomiserDev() {
return openApi -> openApi.addServersItem(new Server().url("https://dev").description("Dev Https Server"));
}
@Bean
@Profile("stg")
public OpenApiCustomiser openApiCustomiserStg() {
return openApi -> openApi.addServersItem(new Server().url("https://stg").description("Stg Https Server"));
}
@Bean
@Profile("prod")
public OpenApiCustomiser openApiCustomiserProd() {
return openApi -> openApi.addServersItem(new Server().url("https://prod").description("Prod Https Server"));
}
}
이때는 yml 파일에서 profiles를 설정해주고, 해당 클래스에 @Profile을 설정해주면 된다.
클래스에 아래 애노테이션을 추가해주고!
- @ConditionalOnProperty(name = "spring.profiles.active")
각 메서드에는
- @Profile("dev")
- @Profile("stg")
- @Profile("prod")
위 메서드를 추가하면 된다.
그럼 dev swagger를 접속했을 때는 위와 같이 dev만 볼 수 있다.
http 자체를 안 보이게 하고 싶은데, 그것도 다른 방법이 있는지 한 번 찾아보긴 해야할 것 같다.
300x250
'Framekwork > SPRING' 카테고리의 다른 글
[Thymeleaf] config에 설정된 url 패턴을 타임리프 src 경로로 설정 (0) | 2024.07.10 |
---|---|
[SPRING] @BeforeEach @AfterEach 어노테이션 (0) | 2024.04.17 |
[스프링부트] Querydsl 사용 테스트 02 (commnet만 list에 담기) (0) | 2024.03.09 |
[스프링부트] Querydsl 사용 테스트 01 (댓글 있는 리스트 전체 조회) (0) | 2024.03.09 |
[스프링부트] Maven Querydsl 설정 및 의존성 추가 (java: cannot access javax.persistence.entitymanager) (0) | 2024.03.08 |