Skip to content

Commit 7f9501f

Browse files
committed
✨ feat: 스웨거 적용
1 parent a289906 commit 7f9501f

2 files changed

Lines changed: 58 additions & 1 deletion

File tree

build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ dependencies {
3838
// MySQL
3939
runtimeOnly 'com.mysql:mysql-connector-j'
4040

41-
//JWT
41+
// JWT
4242
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
4343
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
4444
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
@@ -47,6 +47,9 @@ dependencies {
4747
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
4848
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
4949

50+
// Swagger
51+
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0'
52+
5053
// Testing
5154
testImplementation 'org.springframework.security:spring-security-test'
5255
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package refresh.acci.global.config;
2+
3+
import io.swagger.v3.oas.models.Components;
4+
import io.swagger.v3.oas.models.OpenAPI;
5+
import io.swagger.v3.oas.models.info.Info;
6+
import io.swagger.v3.oas.models.security.SecurityRequirement;
7+
import io.swagger.v3.oas.models.security.SecurityScheme;
8+
import io.swagger.v3.oas.models.servers.Server;
9+
import org.springframework.context.annotation.Bean;
10+
import org.springframework.context.annotation.Configuration;
11+
12+
import java.util.List;
13+
14+
@Configuration
15+
public class SwaggerConfig {
16+
17+
@Bean
18+
public OpenAPI customOpenAPI() {
19+
20+
// API 기본 정보
21+
Info info = new Info()
22+
.title("Acci")
23+
.description("Acci - AI 기반 교통사고 과실비율 분석 및 사고 대응 도움 서비스")
24+
.version("1.0.0");
25+
26+
// 서버 정보
27+
Server server = new Server()
28+
.url("https://acci-ai.site")
29+
.description("배포 서버");
30+
31+
Server localServer = new Server()
32+
.url("http://localhost:8080")
33+
.description("로컬 개발 서버");
34+
35+
// 보안 스키마 (JWT Bearer Token)
36+
SecurityScheme bearerAuth = new SecurityScheme()
37+
.type(SecurityScheme.Type.HTTP)
38+
.scheme("bearer")
39+
.bearerFormat("JWT")
40+
.in(SecurityScheme.In.HEADER)
41+
.name("Authorization");
42+
43+
// 보안 요구 사항 (전역 적용)
44+
SecurityRequirement securityRequirement = new SecurityRequirement()
45+
.addList("bearerAuth");
46+
47+
// OpenAPI 객체 구성
48+
return new OpenAPI()
49+
.info(info)
50+
.servers(List.of(server, localServer))
51+
.components(new Components().addSecuritySchemes("bearerAuth", bearerAuth))
52+
.addSecurityItem(securityRequirement);
53+
}
54+
}

0 commit comments

Comments
 (0)