Giriş
Şu satırı dahil ederiz
import org.springframework.cloud.gateway.route.RouteLocator;
Bu sınıf yerine application.properties de kullanılabilir.
routes metodu
1. route Kullanımı
Örnek
Şöyle yaparız
import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; @Configuration public class GatewayMicroservicesConfig { public RouteLocator gatewayConfig(RouteLocatorBuilder locatorBuilder) { return locatorBuilder.routes() .route(r -> r.path("/firstmicroservice/**").uri("http://localhost:8081/")) .route( r -> r.path("/secondmicroservice/**").uri("http://localhost:8082/")) .build(); } }
Aynı şeyi application.properties ile şöyle yaparız
# application.properties file for spring cloud gateway spring.application.name=gateway sever.port=8080 ## microservices mapping ## spring.cloud.gateway.routes[0].id=microservice-one spring.cloud.gateway.routes[0].uri=http://localhost:8081/ spring.cloud.gateway.routes[0].predicates[0]=Path=/firstmicroservice/** spring.cloud.gateway.routes[1].id=microservice-two spring.cloud.gateway.routes[1].uri=http://localhost:8082/ spring.cloud.gateway.routes[1].predicates[0]=Path=/secondmicroservice/
Örnek
Şöyle yaparız
Aynısını application.properties şeklinde yapsaydık şöyle olurdu@Beanpublic RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {return builder.routes().route(r -> r.path("/employee/**").uri("http://localhost:8081/").id("employeeModule")).route(r -> r.path("/consumer/**").uri("http://localhost:8082/").id("consumerModule")).build();}
spring:cloud:gateway:routes:- id: employeeModuleuri: http://localhost:8081/predicates:- Path=/employee/**- id: consumerModuleuri: http://localhost:8082/predicates:- Path=/consumer/**
2. filter Kullanımı
Açıklaması şöyle. Yani Http isteğine ekleme, çıkarma, değişiklikler yapılabilir
In addition to creating a route, RouteLocatorBuilder allows you to add various predicates and filters.
Örnek
Şöyle yaparız
@Bean public RouteLocator myRoutes(RouteLocatorBuilder builder) { return builder.routes() .route(p -> p .path("/get") .filters(f -> f.addRequestHeader("Hello", "World")) .uri("http://httpbin.org:80")) .build(); }
Açıklaması şöyle
The route created above can make requests for “/get” forwarded to “http://httpbin.org/get". On the route configuration, we added a filter, which will add a header to the request, the key is hello, and the value is world.
Örnek
Şöyle yaparız
import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.cloud.gateway.route.RouteLocator;import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.security.oauth2.gateway.TokenRelayGatewayFilterFactory;@EnableEurekaClient@SpringBootApplicationpublic class ApiGatewayApplication {@Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder,TokenRelayGatewayFilterFactory filterFactory) {return builder.routes().route("car-service", r -> r.path("/cars").filters(f -> f.filter(filterFactory.apply())).uri("lb://car-service")).build();}}
Fallback tanımlamak içindir
Örnek
Şöyle yaparız
@Bean public RouteLocator myRoutes(RouteLocatorBuilder builder) { String httpUri = "http://httpbin.org:80"; return builder.routes() .route(p -> p .path("/get") .filters(f -> f.addRequestHeader("Hello", "World")) .uri(httpUri)) .route(p -> p .host("*.foo.com") .filters(f -> f .hystrix(config -> config .setName("mycmd") .setFallbackUri("forward:/fallback"))) .uri(httpUri)) .build(); }
@RequestMapping("/fallback") public Mono<String> fallback() { return Mono.just("fallback"); }
curl --dump-header - --header 'Host: www.foo.com' http://localhost:8080/delay/3
Hiç yorum yok:
Yorum Gönder