Убедитесь, что в ваших сервисах есть следующие зависимости: продукт, платеж, заказ и API-шлюз:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
Добавьте аннотацию @EnableSwagger2
во все ваши сервисы.
Добавьте зависимости прокси zuul в свой проект шлюза API. Это должно направить трафик c от api-gateway swagger к другим вашим службам.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
Добавьте аннотацию @EnableZuulProxy
в api-gateway.
Затем поместите эту конфигурацию в api -шлюз, и все должно работать.
@Primary
@Configuration
public class Swagger2Config implements SwaggerResourcesProvider {
@Autowired
private RouteLocator routeLocator;
@Override
public List<SwaggerResource> get() {
List<SwaggerResource> resources = new ArrayList<>();
routeLocator.getRoutes().forEach(route -> {
resources.add(swaggerResource(route.getId(), route.getFullPath().replace("**", "v2/api-docs"), "1.0"));
});
return resources;
}
private SwaggerResource swaggerResource(final String name, final String location, final String version) {
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
}
}
Когда вы попадете на страницу swagger API-шлюза, в правом верхнем углу вы увидите вариант выбора продукта, оплаты и заказать услуги. Выберите любой из них и попробуйте использовать API.