Ошибка Spring Cloud Gateway 404 при первом запросе через POSTMAN?

#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

Может кто-нибудь указать, что я здесь делаю не так?