diff --git a/api-module/build.gradle b/api-module/build.gradle index 8df59cd..8812f99 100644 --- a/api-module/build.gradle +++ b/api-module/build.gradle @@ -19,7 +19,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' // Swagger UI - spring doc - implementation 'org.springdoc:springdoc-openapi-ui:1.6.14' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.6' // Spring Security implementation 'org.springframework.boot:spring-boot-starter-security' diff --git a/api-module/src/main/java/hongik/triple/apimodule/global/config/SwaggerConfig.java b/api-module/src/main/java/hongik/triple/apimodule/global/config/SwaggerConfig.java new file mode 100644 index 0000000..0050fe4 --- /dev/null +++ b/api-module/src/main/java/hongik/triple/apimodule/global/config/SwaggerConfig.java @@ -0,0 +1,35 @@ +package hongik.triple.apimodule.global.config; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +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 org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SwaggerConfig { + + @Bean + public OpenAPI openAPI() { + Info info = new Info().title("AcneLog Server Swagger UI") + .description("AcneLog 서버 API 테스트 페이지입니다.") + .version("v0.0.1"); + + String jwtSchemeName = "JWT Authentication"; + SecurityRequirement securityRequirement = new SecurityRequirement().addList(jwtSchemeName); + Components components = new Components() + .addSecuritySchemes(jwtSchemeName, new SecurityScheme() + .name(jwtSchemeName) + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT")); + + // Swagger UI 접속 후, 딱 한 번만 accessToken을 입력해주면 모든 API에 토큰 인증 작업이 적용됩니다. + return new OpenAPI() + .info(info) + .addSecurityItem(securityRequirement) + .components(components); + } +}