From 37f2afcd2ba3f8b9062e991c970f6adcdee2e78c Mon Sep 17 00:00:00 2001 From: me Date: Tue, 24 Feb 2026 08:19:41 +0300 Subject: [PATCH] feat: add Swagger/OpenAPI documentation --- pom.xml | 5 +++ .../bankcards/config/OpenApiConfig.java | 36 +++++++++++++++++++ .../bankcards/config/SecurityConfig.java | 7 +++- src/main/resources/application.yml | 4 +++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/example/bankcards/config/OpenApiConfig.java diff --git a/pom.xml b/pom.xml index aa76dd4..463c291 100644 --- a/pom.xml +++ b/pom.xml @@ -66,6 +66,11 @@ ${jjwt.version} runtime + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.5.0 + org.projectlombok lombok diff --git a/src/main/java/com/example/bankcards/config/OpenApiConfig.java b/src/main/java/com/example/bankcards/config/OpenApiConfig.java new file mode 100644 index 0000000..0aa3530 --- /dev/null +++ b/src/main/java/com/example/bankcards/config/OpenApiConfig.java @@ -0,0 +1,36 @@ +package com.example.bankcards.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 OpenApiConfig { + + @Bean + public OpenAPI openAPI() { + return new OpenAPI() + .info( + new Info() + .title("Bank Card Management API") + .description("REST API for managing bank cards") + .version("1.0") + ) + .addSecurityItem( + new SecurityRequirement().addList("Bearer Authentication") + ) + .components( + new Components().addSecuritySchemes( + "Bearer Authentication", + new SecurityScheme() + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT") + ) + ); + } +} diff --git a/src/main/java/com/example/bankcards/config/SecurityConfig.java b/src/main/java/com/example/bankcards/config/SecurityConfig.java index 34d211d..95820c3 100644 --- a/src/main/java/com/example/bankcards/config/SecurityConfig.java +++ b/src/main/java/com/example/bankcards/config/SecurityConfig.java @@ -4,7 +4,6 @@ import com.example.bankcards.security.JwtAuthenticationFilter; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.dao.DaoAuthenticationProvider; @@ -38,6 +37,12 @@ public class SecurityConfig { auth .requestMatchers("/api/auth/**") .permitAll() + .requestMatchers( + "/swagger-ui/**", + "/v3/api-docs/**", + "/swagger-ui.html" + ) + .permitAll() .requestMatchers("/api/admin/**") .hasAuthority("ROLE_ADMIN") .anyRequest() diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2a27258..f38bd86 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -19,3 +19,7 @@ app: expiration: 86400000 card: encryption-key: 1234567890123456 + +springdoc: + swagger-ui: + path: /swagger-ui.html