#spring-boot #spring-cloud #spring-cloud-gateway
#весенняя загрузка #spring-cloud #spring-cloud-gateway
Вопрос:
Я разрабатываю простое приложение для микросервисов, используя Spring Cloud Gateway вместе с Keycloak.
У меня есть две службы, которые находятся за шлюзом API:
- Продукт Сервис
- Заказать услугу
- Служба инвентаризации
Когда я пытаюсь получить доступ к URL-адресу службы продукта ( /api/product
— GET Request) через браузер, я перенаправляюсь на страницу аутентификации Keycloak, и после аутентификации я вижу требуемый вывод.
Но когда я пытаюсь получить к нему доступ через POSTMAN, самый первый запрос, который я делаю, возвращает ответ 404, как показано ниже, и следующие запросы работают нормально. Я получаю приведенный ниже ответ на первый запрос:
{
"timestamp": "2021-02-23T22:36:19.590 00:00",
"path": "/",
"status": 404,
"error": "Not Found",
"message": null,
"requestId": "6509ccde-6"
}
Шлюз API правильно зарегистрирован на сервере Eureka.
Вот мой файл API Gateway application.properties:
spring.application.name=api-gateway
spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.discovery.locator.lower-case-service-id=true
spring.cloud.loadbalancer.ribbon.enabled=false
spring.cloud.gateway.default-filters=TokenRelay
spring.cloud.gateway.routes[0].id=product-service
spring.cloud.gateway.routes[0].uri=lb://product-service
spring.cloud.gateway.routes[0].predicates[0]=Path=/api/product
spring.cloud.gateway.routes[1].id=order-service
spring.cloud.gateway.routes[1].uri=lb://order-service
spring.cloud.gateway.routes[1].predicates[0]=Path=/api/order
eureka.instance.instance-id=${spring.application.name}-${random.uuid}
spring.security.oauth2.client.provider.keycloak.issuer-uri=http://localhost:8180/auth/realms/microservices-realm
spring.security.oauth2.client.registration.spring-cloud-gateway-client.client-id=spring-cloud-gateway-client
spring.security.oauth2.client.registration.spring-cloud-gateway-client.client-secret=secret
spring.security.oauth2.client.registration.spring-cloud-gateway-client.provider=keycloak
spring.security.oauth2.client.registration.spring-cloud-gateway-client.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.spring-cloud-gateway-client.redirect-uri=http://localhost:8080/login/oauth2/code/spring-cloud-gateway-client
Я получаю ту же ошибку и при доступе к службе заказов ( /api/order
— POST)
Дополнительная информация:
Служба заказов обменивается данными со службой инвентаризации через притворного клиента, когда я делаю /api/order
почтовый вызов.
Я использую версию Spring Boot — 2.3.8.RELEASE и версию Spring Cloud — Hoxton.SR10
Может кто-нибудь указать, что я здесь делаю не так?