Предположим мы хотим обращаться к нескольким API/нескольким сервисам через одну точку. Для этого мы поднимаем еще один сервис (микросервисная архитектура) и этот сервис будет у нас принимать запросы и перенаправлять их куда надо. Для этого мы создаем приложение Spring Boot и добавляем к нему в зависимости
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
Далее нам нужно в конфиге прописать маршруты.
spring:
cloud:
gateway:
routes:
- id: ya
uri: http://ya.ru
predicates:
- Path=/ya/**
filters:
- StripPrefix=1
- id: employees
uri: http://localhost:8081
predicates:
- Path=/employees/**
filters:
- StripPrefix=1
Для примера. В результате у нас по адресу localhost:8080/ya будет ya.ru а по адресу localhost:8080/employees будет сервис employees запущенный на 8081 порту (имеется в виду что наш сервис cloud gateway запущен на 8080-м порту). StripPrefix=1 значит убрать первую часть url. Далее все запросы соответствующие предикату перенапрявлются на uri. Мы можем запусть Eureka и разрешать наши сервисы через нее. Для этого нам нужно uri в конфиге маршрутов задавать в таком виде:
uri: lb://employee-service
Тут указывается название под которым сервис зарегистрирован в Еврике. Так же мы можем посмотреть список зарегестрированных маршрутов через actuator. Для это в конфиг приложения нам надо добавить:
management:
endpoint:
gateway:
enabled=true
endpoints:
web:
exposure:
include: "*"
И тогда по адресу localhost:8080/actuator/gateway/routes у нас будет информация о маршрутах.
Комментариев нет:
Отправить комментарий