From 143b9ff6c2d498c9789ff9c4416918bbb2ef2b35 Mon Sep 17 00:00:00 2001 From: Alexandr Juncevich Date: Thu, 10 Aug 2023 20:44:43 +0300 Subject: [PATCH] Add Open API --- relay-store-service/build.gradle | 2 + .../java/com/relay/config/OpenAiConfig.java | 47 +++++++++++++++++++ .../web/controllers/RelayController.java | 7 +++ .../src/main/resources/application.yml | 5 ++ 4 files changed, 61 insertions(+) create mode 100644 relay-store-service/src/main/java/com/relay/config/OpenAiConfig.java diff --git a/relay-store-service/build.gradle b/relay-store-service/build.gradle index 3ea465c3..e414dafb 100644 --- a/relay-store-service/build.gradle +++ b/relay-store-service/build.gradle @@ -97,6 +97,8 @@ dependencies { implementation 'org.jetbrains:annotations:16.0.2' implementation 'org.flywaydb:flyway-core' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0' + // implementation 'org.springframework.cloud:spring-cloud-starter-sleuth' runtimeOnly 'io.micrometer:micrometer-registry-prometheus' // implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' diff --git a/relay-store-service/src/main/java/com/relay/config/OpenAiConfig.java b/relay-store-service/src/main/java/com/relay/config/OpenAiConfig.java new file mode 100644 index 00000000..fb1ccbee --- /dev/null +++ b/relay-store-service/src/main/java/com/relay/config/OpenAiConfig.java @@ -0,0 +1,47 @@ +package com.relay.config; + +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.enums.SecuritySchemeIn; +import io.swagger.v3.oas.annotations.enums.SecuritySchemeType; +import io.swagger.v3.oas.annotations.info.Contact; +import io.swagger.v3.oas.annotations.info.Info; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.security.SecurityScheme; +import io.swagger.v3.oas.annotations.servers.Server; + +@OpenAPIDefinition( + info = @Info( + title = "Open API specification", + contact = @Contact( + email = "example@mail.com", + url = "https://localhost.com" + ), + version = "1.0.0", + description = "Open API for store service" + ), + servers = { + @Server( + description = "Local server", + url = "http://localhost:8080" + ), + @Server( + description = "Prod server", + url = "http://google.com" + ) + }, + security = { + @SecurityRequirement( + name = "BearerAuth" + ) + } +) +@SecurityScheme( + name = "BearerAuth", + scheme = "bearer", + type = SecuritySchemeType.HTTP, + bearerFormat = "JWT", + in = SecuritySchemeIn.COOKIE + +) +public record OpenAiConfig() { +} diff --git a/relay-store-service/src/main/java/com/relay/web/controllers/RelayController.java b/relay-store-service/src/main/java/com/relay/web/controllers/RelayController.java index 9aa156c2..f8767b72 100644 --- a/relay-store-service/src/main/java/com/relay/web/controllers/RelayController.java +++ b/relay-store-service/src/main/java/com/relay/web/controllers/RelayController.java @@ -2,6 +2,8 @@ import com.relay.core.service.RelayService; import com.relay.web.model.Relay; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.websocket.server.PathParam; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; @@ -15,6 +17,7 @@ @RestController @RequiredArgsConstructor +@Tag(name = "Relays controller") public class RelayController { /** @@ -23,6 +26,10 @@ public class RelayController { private final RelayService relayService; @GetMapping(value = "/relays") + @Operation( + description = "Get all relays description", + summary = "Get all relays summary" + ) public List findAllRelays() { return relayService.findAll(PageRequest.of(0, 100)).getContent(); } diff --git a/relay-store-service/src/main/resources/application.yml b/relay-store-service/src/main/resources/application.yml index 884d42a9..76984ddf 100644 --- a/relay-store-service/src/main/resources/application.yml +++ b/relay-store-service/src/main/resources/application.yml @@ -43,3 +43,8 @@ custom: sub-config: custom-string: 'custom' custom-number: 100 + + +springdoc: + swagger-ui: + path=/swagger-ui.html \ No newline at end of file