API Gateway не объединяет документы Swagger по микросервисам. Spring boot ⇐ JAVA
API Gateway не объединяет документы Swagger по микросервисам. Spring boot
Pom.xml:
io.springfox springfox-boot-starter 3.0.0 org.springdoc springdoc-openapi-ui 1.6.7 SwaggerConfig.java:
@Configuration @RequiredArgsConstructor публичный класс SwaggerConfig { частный конечный локатор RouteDefinitionLocator; @Бин публичный список APIS() { Группы List = новый ArrayList(); Определения List = locator.getRouteDefinitions().collectList().block(); Definitions.stream().filter(routeDefinition ->routeDefinition.getId().matches(".*-service")).forEach(routeDefinition -> { Строковое имя = RouteDefinition.getId().replaceAll("-service", ""); GroupedOpenApi api = GroupedOpenApi.builder().pathsToMatch("/" + name + "/**").group(name).build(); groups.add(api); }); возвратные группы; } } application.yml:
шлюз: открытие: локатор: включено: правда идентификатор службы в нижнем регистре: true маршруты: - идентификатор: чванство URI: http://localhost:${server.port} предикаты: - Путь=/v3/api-docs/** фильтры: - RewritePath=/v3/api-docs/(?.*), /$\{path}/v3/api-docs - идентификатор: тестовый сервис URI: lb://test-service предикаты: - Путь=/testservice/** фильтры: - RewritePath=/testservice/(?.*), /$\{path} Шлюз API видит тестовый сервис с помощью сервера обнаружения. Когда я вхожу в swagger-ui моего сервера шлюза, на вкладке «Выберите определение» я вижу только определение «по умолчанию», но не вижу определения тестовой службы, которое мне действительно нужно. Я использовал эти уроки:
[*]https://piotrminkowski.com/2020/02/20/m ... c-openapi/ [*]https://dgempiuc.medium.com/api-gateway ... 416398ca47
Скриншот:
Pom.xml:
io.springfox springfox-boot-starter 3.0.0 org.springdoc springdoc-openapi-ui 1.6.7 SwaggerConfig.java:
@Configuration @RequiredArgsConstructor публичный класс SwaggerConfig { частный конечный локатор RouteDefinitionLocator; @Бин публичный список APIS() { Группы List = новый ArrayList(); Определения List = locator.getRouteDefinitions().collectList().block(); Definitions.stream().filter(routeDefinition ->routeDefinition.getId().matches(".*-service")).forEach(routeDefinition -> { Строковое имя = RouteDefinition.getId().replaceAll("-service", ""); GroupedOpenApi api = GroupedOpenApi.builder().pathsToMatch("/" + name + "/**").group(name).build(); groups.add(api); }); возвратные группы; } } application.yml:
шлюз: открытие: локатор: включено: правда идентификатор службы в нижнем регистре: true маршруты: - идентификатор: чванство URI: http://localhost:${server.port} предикаты: - Путь=/v3/api-docs/** фильтры: - RewritePath=/v3/api-docs/(?.*), /$\{path}/v3/api-docs - идентификатор: тестовый сервис URI: lb://test-service предикаты: - Путь=/testservice/** фильтры: - RewritePath=/testservice/(?.*), /$\{path} Шлюз API видит тестовый сервис с помощью сервера обнаружения. Когда я вхожу в swagger-ui моего сервера шлюза, на вкладке «Выберите определение» я вижу только определение «по умолчанию», но не вижу определения тестовой службы, которое мне действительно нужно. Я использовал эти уроки:
[*]https://piotrminkowski.com/2020/02/20/m ... c-openapi/ [*]https://dgempiuc.medium.com/api-gateway ... 416398ca47
Скриншот:
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение