Я использую Spring Cloud Gateway для маршрутизации запросов к нескольким микросервисам, каждый из которых имеет собственную документацию Swagger. Моя цель — получить доступ ко всей документации Swagger через пользовательский интерфейс Swagger шлюза. Однако я столкнулся с проблемой, из-за которой статические ресурсы пользовательского интерфейса Swagger не маршрутизируются правильно.
Конфигурация шлюза
Вот моя текущая конфигурация application.yml для шлюза:
spring:
application:
name: gateway
cloud:
gateway:
routes:
- id: product
uri: ${system-configuration.endpoints.product-service}
predicates:
- Path=/api/products/**
- id: recommendation
uri: ${system-configuration.endpoints.recommendation-service}
predicates:
- Path=/api/recommendations/**
- id: review
uri: ${system-configuration.endpoints.review-service}
predicates:
- Path=/api/reviews/**
springdoc:
api-docs:
enabled: true
swagger-ui:
enabled: true
path: /swagger-ui.html
config-url: /v3/api-docs/swagger-config
urls:
- url: /v3/api-docs
name: API Gateway Service
- name: product-service
url: /api/products/v3/api-docs
- name: recommendation-service
url: /api/recommendations/v3/api-docs
- name: review-service
url: /api/reviews/v3/api-docs
logging:
level:
org.springframework.cloud.gateway: TRACE
Конфигурация микросервиса
Каждый микросервис имеет аналогичную конфигурацию Swagger. Вот пример продукта-услуги:
spring:
application:
name: product-service
springdoc:
api-docs:
path: /api/products/v3/api-docs
swagger-ui:
path: /api/products/swagger-ui.html
Проблема
Когда я пытаюсь получить доступ к пользовательскому интерфейсу Swagger через шлюз (например, http://localhost:8080/swagger-ui.html), я получаю следующую ошибку в журналах шлюза:
No RouteDefinition found for [Exchange: GET http://localhost:8080/webjars/swagger-ui/index.html]
Журналы шлюза:
2024-08-03T22:08:50.590+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.h.RoutePredicateHandlerMapping : No RouteDefinition found for [Exchange: GET http://localhost:8080/webjars/swagger-ui/index.html]
2024-08-03T22:08:50.824+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.f.WeightCalculatorWebFilter : Weights attr: {}
2024-08-03T22:08:50.825+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.h.p.PathRoutePredicateFactory : Pattern "[/api/products/**, /api/products/v3/api-docs]" does not match against value "/webjars/swagger-ui/$%7Bserver.servlet.contextPath%7D/v3/api-docs/swagger-config"
2024-08-03T22:08:50.825+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.h.p.PathRoutePredicateFactory : Pattern "[/api/recommendations/**]" does not match against value "/webjars/swagger-ui/$%7Bserver.servlet.contextPath%7D/v3/api-docs/swagger-config"
2024-08-03T22:08:50.825+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.h.p.PathRoutePredicateFactory : Pattern "[/api/reviews/**]" does not match against value "/webjars/swagger-ui/$%7Bserver.servlet.contextPath%7D/v3/api-docs/swagger-config"
2024-08-03T22:08:50.825+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.h.RoutePredicateHandlerMapping : No RouteDefinition found for [Exchange: GET http://localhost:8080/webjars/swagger-u ... ger-config]
Подробнее здесь: https://stackoverflow.com/questions/788 ... -springdoc
Spring Cloud Gateway не может маршрутизировать микросервис Springdoc ⇐ JAVA
Программисты JAVA общаются здесь
1722715845
Anonymous
Я использую Spring Cloud Gateway для маршрутизации запросов к нескольким микросервисам, каждый из которых имеет собственную документацию Swagger. Моя цель — получить доступ ко всей документации Swagger через пользовательский интерфейс Swagger шлюза. Однако я столкнулся с проблемой, из-за которой статические ресурсы пользовательского интерфейса Swagger не маршрутизируются правильно.
Конфигурация шлюза
Вот моя текущая конфигурация application.yml для шлюза:
spring:
application:
name: gateway
cloud:
gateway:
routes:
- id: product
uri: ${system-configuration.endpoints.product-service}
predicates:
- Path=/api/products/**
- id: recommendation
uri: ${system-configuration.endpoints.recommendation-service}
predicates:
- Path=/api/recommendations/**
- id: review
uri: ${system-configuration.endpoints.review-service}
predicates:
- Path=/api/reviews/**
springdoc:
api-docs:
enabled: true
swagger-ui:
enabled: true
path: /swagger-ui.html
config-url: /v3/api-docs/swagger-config
urls:
- url: /v3/api-docs
name: API Gateway Service
- name: product-service
url: /api/products/v3/api-docs
- name: recommendation-service
url: /api/recommendations/v3/api-docs
- name: review-service
url: /api/reviews/v3/api-docs
logging:
level:
org.springframework.cloud.gateway: TRACE
Конфигурация микросервиса
Каждый микросервис имеет аналогичную конфигурацию Swagger. Вот пример продукта-услуги:
spring:
application:
name: product-service
springdoc:
api-docs:
path: /api/products/v3/api-docs
swagger-ui:
path: /api/products/swagger-ui.html
Проблема
Когда я пытаюсь получить доступ к пользовательскому интерфейсу Swagger через шлюз (например, http://localhost:8080/swagger-ui.html), я получаю следующую ошибку в журналах шлюза:
No RouteDefinition found for [Exchange: GET http://localhost:8080/webjars/swagger-ui/index.html]
Журналы шлюза:
2024-08-03T22:08:50.590+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.h.RoutePredicateHandlerMapping : No RouteDefinition found for [Exchange: GET http://localhost:8080/webjars/swagger-ui/index.html]
2024-08-03T22:08:50.824+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.f.WeightCalculatorWebFilter : Weights attr: {}
2024-08-03T22:08:50.825+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.h.p.PathRoutePredicateFactory : Pattern "[/api/products/**, /api/products/v3/api-docs]" does not match against value "/webjars/swagger-ui/$%7Bserver.servlet.contextPath%7D/v3/api-docs/swagger-config"
2024-08-03T22:08:50.825+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.h.p.PathRoutePredicateFactory : Pattern "[/api/recommendations/**]" does not match against value "/webjars/swagger-ui/$%7Bserver.servlet.contextPath%7D/v3/api-docs/swagger-config"
2024-08-03T22:08:50.825+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.h.p.PathRoutePredicateFactory : Pattern "[/api/reviews/**]" does not match against value "/webjars/swagger-ui/$%7Bserver.servlet.contextPath%7D/v3/api-docs/swagger-config"
2024-08-03T22:08:50.825+03:00 TRACE 16148 --- [gateway] [ctor-http-nio-4] o.s.c.g.h.RoutePredicateHandlerMapping : No RouteDefinition found for [Exchange: GET http://localhost:8080/webjars/swagger-ui/$%7Bserver.servlet.contextPath%7D/v3/api-docs/swagger-config]
Подробнее здесь: [url]https://stackoverflow.com/questions/78829683/spring-cloud-gateway-unable-to-route-microservice-springdoc[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия