@@ -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<GroupedOpenApi> apis() {
|
||||
List<GroupedOpenApi> groups = new ArrayList<>();
|
||||
List<RouteDefinition> 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user