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
@@ -0,0 +1,63 @@
package com.phonebill.bill.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.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Swagger/OpenAPI 설정
* Bill Service API 문서화를 위한 설정
*/
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.info(apiInfo())
.addServersItem(new Server()
.url("http://localhost:8082")
.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("8082")
.description("Server port"))))
.addSecurityItem(new SecurityRequirement().addList("Bearer Authentication"))
.components(new Components()
.addSecuritySchemes("Bearer Authentication", createAPIKeyScheme()));
}
private Info apiInfo() {
return new Info()
.title("Bill Service API")
.description("통신요금 관리 서비스 - 요금 조회 및 관리 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");
}
}
@@ -94,9 +94,8 @@ spring:
# 서버 설정
server:
port: ${SERVER_PORT:8081}
port: ${SERVER_PORT:8082}
servlet:
context-path: /bill-service
encoding:
charset: UTF-8
enabled: true