Giriş
application.properties yerine aynı şeyi kodla yapmak ta mümkün. Kodla yapmak için SpringCloud Gateway RouteLocator Arayüzü yazısına bakabilirsiniz
httpClient
Örnek
Şöyle yaparız
//global timeout for all routes spring.cloud.gateway.httpclient.response-timeout= 2s //timeout for one specific route in ms spring.cloud.gateway.routes[0].metadata.response-timeout=3000
routes.id Alanı
route için tanımlanan tekil id ismidir
Örnek
Şöyle yaparız. Burada iki tane route tanımlanıyor. Her route için uri alanı ile hangi service yönlendirileceği belirtiliyor. Predicate ile de hangi isteklerin route ile eşleşeceği belirtiliyor.
# 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/
routes.uri Alanı
Çağrıyı yönlendireceğimiz mikroservis'in ismidir.
Örnek
Şöyle yaparız. Burada Path iler car/ altındaki her şey yakalanır. Örneğin "localhost:8080/car/cars" adresini kullanabiliriz. Bu adrese gelen çağrı lb://car sayesinde Eureka'ya "car" ismi ile kayıt olmuş "cars" adresini dinleyen servis'e gönderilir
server:port: 8080spring:application:name: gatewaycloud:gateway:routes:- id: car-service # just an id, should end with -serviceuri: lb://car # the load balancer id (the configured application name)predicates:- Path=/car/** # the url pathfilters:- RewritePath=/car/(?<path>.*), /$\{path}- id: hotel-serviceuri: lb://hotelpredicates:- Path=/hotel/**filters:- RewritePath=/hotel/(?<path>.*), /$\{path}- id: trip-serviceuri: lb://trippredicates:- Path=/trip/**filters:- RewritePath=/trip/(?<path>.*), /$\{path}
Örnek
Şöyle yaparız. Burada http://localhost:9000/test/foo gibi bir adrese gidersek, Eureka'ya test-service ismiyle kayıt olmuş servisin foo adresini dinleyen servise gönderilir.
spring:application:name: gatewaycloud:gateway:routes:- id: test-serviceuri: lb://test-servicepredicates:- Path=/test/**server:port: 9000eureka:client:registerWithEureka: trueserviceUrl:defaultZone: ${EUREKA_SERVER_ADDRESS}
discovery.locator Alanı
Örnek
Açıklaması şöyle
Unlike Zuul, Spring cloud Gateway doesn't automatically look in Eureka for routing calls. So we enabled it by adding a couple of additional properties.
Şöyle yaparız. Eğer bu ayarları yapmak istemiyorsak, sanırım @EnableDiscoveryClient anotasyonunu kullanmak gerekir
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/spring.cloud.gateway.discovery.locator.enabled=truespring.cloud.gateway.discovery.locator.lowerCaseServiceId=true
default-filters Alanı
default-filters Alanı yazısına taşıdım
routes.predicates Alanı
Eğer çağrı bu koşula uyuyorsa yönlendirilir. Bir sürü Predicate Factory sınıfı var. Bunlardan birisi de Path
Örnek - Path
Şöyle yaparız
spring:
cloud:
gateway:
default-filters:
- TokenRelay
routes:
- id: product-resource-service
uri: http://localhost:9191
predicates:
- Path=/product/**
Açıklaması şöyle
Here we are setting a route for any path request matching /product will be directed to the resource server (product-service) that is running at localhost at port 9191.
In the default-filters section, we would have to add “TokenRelay”, so that the API Gateway passes the JWT access token to the resource server.
Örnek - Path
Şöyle yaparız. Gateway 8090 potunua dinliyor. http://127.0.0.1:8090/service1Id/demoApi adresine gelen isteği http://127.0.0.1:8080/service1Id/demoApi adresine yönlendirir.
service.port=8090 //port for apigateway
spring.cloud.gateway.routes[0].id=service1
spring.cloud.gateway.routes[0].uri=http://127.0.0.1:8080/
spring.cloud.gateway.routes[0].predicates=Path=/service1Id/**
Örnek - Path + Header
Eğer Http Header'da Authorizaton olarak Basic password yazıyorsa yönlendirmek için şöyle yaparız
cloud:
gateway:
routes:
- id: serviceRoute
uri: http://service:8000
predicates:
- Path=/service/
- Header=Authorization, Basic password
filters:
- name: CircuitBreaker
args:
name: slow
fallbackUri: forward
Hiç yorum yok:
Yorum Gönder