diff --git a/build.gradle b/build.gradle index 6d40455a..a36198ea 100644 --- a/build.gradle +++ b/build.gradle @@ -75,6 +75,9 @@ dependencies { //aws s3 implementation 'com.amazonaws:aws-java-sdk-s3:1.12.638' + + // swagger-ui + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0' } tasks.named('test') { diff --git a/src/main/java/com/project/bumawiki/global/config/swagger/GroupApiConfig.java b/src/main/java/com/project/bumawiki/global/config/swagger/GroupApiConfig.java new file mode 100644 index 00000000..ed798c61 --- /dev/null +++ b/src/main/java/com/project/bumawiki/global/config/swagger/GroupApiConfig.java @@ -0,0 +1,58 @@ +package com.project.bumawiki.global.config.swagger; + +import org.springdoc.core.models.GroupedOpenApi; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class GroupApiConfig { + + @Bean + public GroupedOpenApi authApi() { + return GroupedOpenApi.builder() + .group("auth") + .pathsToMatch("/api/auth/**") + .build(); + } + + @Bean + public GroupedOpenApi coinApi() { + return GroupedOpenApi.builder() + .group("coin") + .pathsToMatch("/api/coins/**") + .build(); + } + + @Bean + public GroupedOpenApi docsApi() { + return GroupedOpenApi.builder() + .group("docs") + .pathsToMatch("/api/docs/**") + .build(); + } + + @Bean + public GroupedOpenApi thumbsUpApi() { + return GroupedOpenApi.builder() + .group("thumbsUp") + .pathsToMatch("/api/thumbs/**") + .build(); + } + + @Bean + public GroupedOpenApi userApi() { + return GroupedOpenApi.builder() + .group("user") + .pathsToMatch("/api/user/**") + .build(); + } + + @Bean + public GroupedOpenApi api() { + return GroupedOpenApi.builder() + .group("*") + .pathsToMatch("/api/**") + .build(); + } + +} diff --git a/src/main/java/com/project/bumawiki/global/config/swagger/SwaggerConfig.java b/src/main/java/com/project/bumawiki/global/config/swagger/SwaggerConfig.java new file mode 100644 index 00000000..833f68d5 --- /dev/null +++ b/src/main/java/com/project/bumawiki/global/config/swagger/SwaggerConfig.java @@ -0,0 +1,36 @@ +package com.project.bumawiki.global.config.swagger; + +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() { + String jwt = "JWT"; + SecurityRequirement securityRequirement = new SecurityRequirement().addList(jwt); + Components components = new Components().addSecuritySchemes(jwt, new SecurityScheme() + .name(jwt) + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT") + ); + + return new OpenAPI() + .addSecurityItem(securityRequirement) + .components(components) + .info(apiInfo()); + } + + private Info apiInfo() { + return new Info() + .version("v2.0") + .title("Api Docs") + .description("부마위키 스웨거 API 문서"); + } +}