org.springdoc.demo.services.gateway.GatewayApplication Maven / Gradle / Ivy
The newest version!
package org.springdoc.demo.services.gateway;
import java.util.ArrayList;
import java.util.List;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.GroupedOpenApi;
import org.springdoc.core.SwaggerUiConfigParameters;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.gateway.route.RouteDefinition;
import org.springframework.cloud.gateway.route.RouteDefinitionLocator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Lazy;
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
@Bean
@Lazy(false)
public List apis(SwaggerUiConfigParameters swaggerUiConfigParameters, RouteDefinitionLocator locator) {
List groups = new ArrayList<>();
List definitions = locator.getRouteDefinitions().collectList().block();
for (RouteDefinition definition : definitions) {
System.out.println("id: " + definition.getId()+ " "+definition.getUri().toString());
}
definitions.stream().filter(routeDefinition -> routeDefinition.getId().matches(".*-service")).forEach(routeDefinition -> {
String name = routeDefinition.getId().replaceAll("-service", "");
swaggerUiConfigParameters.addGroup(name);
GroupedOpenApi.builder().pathsToMatch("/" + name + "/**").group(name).build();
});
return groups;
}
@Bean
public OpenAPI customOpenAPI(@Value("${springdoc.version}") String appVersion) {
return new OpenAPI()
.components(new Components())
.info(new io.swagger.v3.oas.models.info.Info().title("Gateway API").version(appVersion)
.license(new License().name("Apache 2.0").url("http://springdoc.org")));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy