From f9b73fc267731ea732bfb5720dd5ac7ec023fe9d Mon Sep 17 00:00:00 2001 From: Peter Siegmund Date: Mon, 14 Oct 2024 22:51:45 +0200 Subject: [PATCH] new settings Signed-off-by: Peter Siegmund --- build.gradle | 1 + .../fhq/config/OpenAPIConfiguration.java | 32 ++++++++++++++++++ src/main/resources/application-dev.yaml | 7 ++++ src/main/resources/application.yaml | 33 +++++++++---------- src/main/resources/public/error/404.html | 27 +++++++++++++++ 5 files changed, 83 insertions(+), 17 deletions(-) create mode 100644 src/main/java/dev/mars3142/fhq/config/OpenAPIConfiguration.java create mode 100644 src/main/resources/public/error/404.html diff --git a/build.gradle b/build.gradle index 11b5b13..f86aa7b 100644 --- a/build.gradle +++ b/build.gradle @@ -45,6 +45,7 @@ dependencies { implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8' implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0' implementation 'org.springdoc:springdoc-openapi-starter-webmvc-api:2.6.0' + implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' testImplementation 'io.projectreactor:reactor-test' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' diff --git a/src/main/java/dev/mars3142/fhq/config/OpenAPIConfiguration.java b/src/main/java/dev/mars3142/fhq/config/OpenAPIConfiguration.java new file mode 100644 index 0000000..a1d785d --- /dev/null +++ b/src/main/java/dev/mars3142/fhq/config/OpenAPIConfiguration.java @@ -0,0 +1,32 @@ +package dev.mars3142.fhq.config; + +import java.util.ArrayList; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springdoc.core.models.GroupedOpenApi; +import org.springframework.cloud.gateway.route.RouteDefinition; +import org.springframework.cloud.gateway.route.RouteDefinitionLocator; +import org.springframework.cloud.gateway.route.RouteLocator; +import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@RequiredArgsConstructor +public class OpenAPIConfiguration { + + private final RouteDefinitionLocator locator; + + @Bean + public List apis() { + List groups = new ArrayList<>(); + List definitions = locator.getRouteDefinitions().collectList().block(); + assert definitions != null; + definitions.stream().filter(routeDefinition -> routeDefinition.getId().matches(".*-service")) + .forEach(routeDefinition -> { + String name = routeDefinition.getId().replaceAll("-service", ""); + groups.add(GroupedOpenApi.builder().pathsToMatch("/" + name + "/**").group(name).build()); + }); + return groups; + } +} diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml index 675f6b4..e80bea8 100644 --- a/src/main/resources/application-dev.yaml +++ b/src/main/resources/application-dev.yaml @@ -5,3 +5,10 @@ eureka: client: service-url: defaultZone: http://localhost:8761/eureka + +logging: + level: + org: + springframework: + cloud: + gateway: TRACE diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 7617148..83177d6 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -4,8 +4,6 @@ eureka: fetch-registry: true service-url: defaultZone: http://eureka-service.web:8761/eureka - instance: - instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}} info: application: @@ -36,15 +34,6 @@ sentry: # We recommend adjusting this value in production. tracesSampleRate: 1.0 -springdoc: - swagger-ui: - path: /swagger-ui.html - urls: - - name: TimeZone Service - url: /aggregate/timezone/v3/api-docs - - name: Google Service - url: /aggregate/google/v3/api-docs - spring: application: name: edge-service @@ -60,27 +49,37 @@ spring: backoff: firstBackoff: 50ms maxBackoff: 5000ms + discovery: + locator: + enabled: false routes: + - id: edge + uri: lb://edge-service + predicates: + - Path=/v3/api-docs/** + filters: + - RewritePath=/v3/api-docs/(?.*), /$\{path}/v3/api-docs + - id: timezone-service uri: lb://timezone-service predicates: - - Path=/v1/timezone/**, /health/timezone, /aggregate/timezone/v3/api-docs + - Path=/v1/timezone/**, /health/timezone, /timezone/v3/api-docs filters: - RewritePath=/health/timezone, /actuator/health - - RewritePath=/aggregate/timezone/v3/api-docs, /v3/api-docs + - RewritePath=/timezone/(?.*), /$\{segment} - id: google-service uri: ${GOOGLE_SERVICE_URI:http://google-service.web:8080} predicates: - - Path=/v1/account/**, /health/google, /aggregate/google/v3/api-docs + - Path=/v1/account/**, /health/google, /google/v3/api-docs filters: - RewritePath=/health/google, /actuator/health - - RewritePath=/aggregate/google/v3/api-docs, /v3/api-docs + - RewritePath=/google/(?.*), /$\{segment} - id: token-service uri: ${BACKEND_SERVICE_URI:http://backend-service.web:8080} predicates: - - Path=/v1/token/**, /health/backend, /aggregate/backend/v3/api-docs + - Path=/v1/token/**, /health/backend, /token/v3/api-docs filters: - RewritePath=/health/backend, /actuator/health - - RewritePath=/aggregate/backend/v3/api-docs, /v3/api-docs + - RewritePath=/token/(?.*), /$\{segment} diff --git a/src/main/resources/public/error/404.html b/src/main/resources/public/error/404.html new file mode 100644 index 0000000..4c9f867 --- /dev/null +++ b/src/main/resources/public/error/404.html @@ -0,0 +1,27 @@ + + + + + + Rive Hello World + + +
+ +
+ + + + \ No newline at end of file