Swagger 설정 개선 및 context-path 제거

주요 변경사항:
- 모든 서비스 context-path 제거 (user-service: /api/v1, bill-service: /bill-service, product-service: /api/v1, kos-mock: /kos-mock)
- 포트 번호 조정 (bill-service: 8082, kos-mock: 8084)
- 모든 서비스에 표준화된 SwaggerConfig 클래스 추가
- SecurityConfig에서 Swagger 관련 URL 무인증 처리 개선
- JWT Bearer Authentication 스키마 추가
- 서버 URL 설정 및 커스텀 변수 지원

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
hiondal
2025-09-09 01:32:24 +09:00
parent b489c73201
commit 6ca4daed8d
10 changed files with 243 additions and 40 deletions
@@ -1,45 +1,63 @@
package com.phonebill.kosmock.config;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;
/**
* Swagger/OpenAPI 설정
* KOS Mock Service API 문서화를 위한 설정
*/
@Configuration
public class SwaggerConfig {
@Value("${server.servlet.context-path:/}")
private String contextPath;
@Bean
public OpenAPI kosMockOpenAPI() {
public OpenAPI openAPI() {
return new OpenAPI()
.info(new Info()
.title("KOS Mock Service API")
.description("KT 통신사 시스템(KOS-Order)을 모방한 Mock 서비스 API")
.version("v1.0.0")
.contact(new Contact()
.name("개발팀")
.email("dev@phonebill.com"))
.license(new License()
.name("Internal Use Only")
.url("http://www.phonebill.com/license")))
.servers(List.of(
new Server()
.url("http://localhost:8080" + contextPath)
.description("개발 환경"),
new Server()
.url("https://kos-mock.phonebill.com" + contextPath)
.description("운영 환경")
));
.info(apiInfo())
.addServersItem(new Server()
.url("http://localhost:8084")
.description("Local Development"))
.addServersItem(new Server()
.url("{protocol}://{host}:{port}")
.description("Custom Server")
.variables(new io.swagger.v3.oas.models.servers.ServerVariables()
.addServerVariable("protocol", new io.swagger.v3.oas.models.servers.ServerVariable()
._default("http")
.description("Protocol (http or https)")
.addEnumItem("http")
.addEnumItem("https"))
.addServerVariable("host", new io.swagger.v3.oas.models.servers.ServerVariable()
._default("localhost")
.description("Server host"))
.addServerVariable("port", new io.swagger.v3.oas.models.servers.ServerVariable()
._default("8084")
.description("Server port"))))
.addSecurityItem(new SecurityRequirement().addList("Bearer Authentication"))
.components(new Components()
.addSecuritySchemes("Bearer Authentication", createAPIKeyScheme()));
}
private Info apiInfo() {
return new Info()
.title("KOS Mock Service API")
.description("통신요금 관리 서비스 - KOS 시스템 Mock API")
.version("1.0.0")
.contact(new Contact()
.name("PhoneBill Development Team")
.email("dev@phonebill.com"));
}
private SecurityScheme createAPIKeyScheme() {
return new SecurityScheme()
.type(SecurityScheme.Type.HTTP)
.bearerFormat("JWT")
.scheme("bearer");
}
}
+1 -3
View File
@@ -5,9 +5,7 @@ spring:
active: dev
server:
port: ${SERVER_PORT:8080}
servlet:
context-path: /kos-mock
port: ${SERVER_PORT:8084}
management:
endpoints: